当我做这个乘法时
0.94 * 8700
输出
8177.999999999999
但应该是
8178
我正在使用java,但我不认为这个错误与特定的编程语言有关
现在我的问题是......为什么会这样?
什么其他数字(仅作为示例)会导致同样的错误?
答案 0 :(得分:5)
在您的情况下,具体原因是实数0.94无法在双精度浮点中精确表示。当您输入0.94
时,存储的实际数字为0.939999999999999946709294817992486059665679931640625
。
答案 1 :(得分:0)
这不是错误。 IEEE浮点数不能完全代表十进制数。