double.parse返回精度差异

时间:2011-05-31 15:45:10

标签: c#

为什么double.parse ("1833.35")会返回值1833.349999999999

2 个答案:

答案 0 :(得分:6)

这是因为浮点值在机器中用二进制指数表示,而10不是2的偶数幂。因此,一些基数为10的分数在转换时会变成重复分数。

为了说明,只需弄清楚你如何用二进制代表35/100。

答案 1 :(得分:1)

如果您需要绝对正确,可以switch to using a decimal而不是双倍。十进制存储具有基数10指数的数字。

无法使用double或float来表示.35。