我对特定的转换有一个有趣的问题。 当我尝试将字符串"0,3"
或"0.3"
(根据UICulture
)转换为Double
值时,结果为0,29999999
。我还没有找到解决方案,以获得结果0,3
。将字符串转换为双C#
有什么办法可以在转换后得到相同的值?
我对特定的转换有一个有趣的问题。 当我尝试将字符串"0,3"
或"0.3"
(根据UICulture
)转换为Double
值时,结果为0,29999999
。我还没有找到解决方案,以获得结果0,3
。将字符串转换为双C#
有什么办法可以在转换后得到相同的值?
double
不能代表每个值。它保证代表整数,但就是这样。如果你需要的东西更像是数字的“人”的逼近,使用decimal
:
decimal val = decimal.Parse("0.3");
注:decimal
也并不表示每个值 - 但它确实近似更趋于怎么样的人的方式预计数字工作。特别是,double
几乎没有用于货币等东西。
Jon Skeet [here](http://stackoverflow.com/a/618596/18192)提供了一些更详细的信息。点击链接的文章进行深入的解释。简单的答案是,“十进制”以10为基数,与0.3匹配。 'double'在基数2中,不是。 – Brian
这已被问了很多很多很多次。由于十进制值存储在二进制计算机中,0.3'不能完全表示为双精度值。 – mellamokb
查看Marc的回答。值得注意的是,它被称为浮点表示而不是表示。 http://en.wikipedia.org/wiki/Floating_point – kenny