我有以下代码示例:
float val = 16777216.0F;
var badResult = Convert.ToDecimal(val);
//badResult has value 16777220
为什么这种精度会丢失?指定的值为 2^24,浮点数可以表示的值。有没有我可以使用的 .net 库来使这种转换正常工作,而不必滚动我自己的 iCustomFormatter?
谢谢!
编辑,这是我用作解决方案的丑陋代码
var goodResult = Convert.ToDecimal(((double)val));