表示中的浮点错误?
当我做这个乘法
0.94 * 8700
输出是
8177.999999999999
但应该是
8178
我使用java,但我不认为这个错误是与一个特定的编程语言现在我的问题是…为什么发生这种情况?
和其他数字(只是一个例子)导致相同的错误?
在你的情况下的具体原因是实数0.94不能准确地表示在双精度浮点。 当您键入0.94
,实际存储的数字是0.939999999999999946709294817992486059665679931640625
。
这不是一个错误。 IEEE浮点数不能完全表示十进制数。