表示中的浮点错误?

Ahm*_*hem 0 floating-point floating-accuracy double-precision

当我做这个乘法

0.94*8700

输出是

8177.999999999999

但应该是

8178

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

Ole*_*ann 5

在您的情况下,具体原因是实数0.94不能精确表示在双精度浮点.键入时0.94,存储的实际数字是0.939999999999999946709294817992486059665679931640625.