表示中的浮点错误?

时间:2011-09-28 10:23:11

标签: floating-point floating-accuracy double-precision

当我做这个乘法时

  

0.94 * 8700

输出

  

8177.999999999999

但应该是

  

8178

我正在使用java,但我不认为这个错误与特定的编程语言有关 现在我的问题是......为什么会这样?
什么其他数字(仅作为示例)会导致同样的错误?

2 个答案:

答案 0 :(得分:5)

在您的情况下,具体原因是实数0.94无法在双精度浮点中精确表示。当您输入0.94时,存储的实际数字为0.939999999999999946709294817992486059665679931640625

答案 1 :(得分:0)

这不是错误。 IEEE浮点数不能完全代表十进制数。