表示中的浮点错误?

当我做这个乘法

0.94 * 8700

输出是

8177.999999999999

但应该是

8178

我使用java,但我不认为这个错误是与一个特定的编程语言现在我的问题是…为什么发生这种情况?
和其他数字(只是一个例子)导致相同的错误?

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

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