我有下面的代码示例:转换浮到小数,错误地失去精度
float val = 16777216.0F;
var badResult = Convert.ToDecimal(val);
//badResult has value 16777220
这是为什么呢精密失去了什么?指定的值是2^24,这是float可以表示的值。是否有任何.net库可用于使此转换正常工作,而无需推出自己的iCustomFormatter?
谢谢!
编辑,这是难看的代码我用作溶液
var goodResult = Convert.ToDecimal(((double)val));
如果你在使用数学,一路使用浮动/双打。如果您使用货币,则一路使用小数。为什么你需要在它们之间进行转换? – 2012-03-26 15:58:13
另请参阅http://ideone.com/w1sTm – 2012-03-26 16:00:44
@graham。不幸的是,我正在从硬件返回代码。 – greggorob64 2012-03-26 17:24:28