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