为什么这个变量 return 是负值?
why does this variable return negative value?
我有一个初始值的变量:34-640.4-71.2.
它应该出现0,而不是结果是否定的。你能告诉我原因吗?谢谢
这与变量在 Java 中的存储方式有关。
double
变量精确到一定的小数位数。在你的等式中,虽然 none 的部分超过小数点后一位,但四舍五入是以二进制格式完成的,导致小数点后第 16 位出现这种非常小的误差。
-1.776E-15 等于 -0.000000000000001776.
这是一个有趣的讨论帖,可以让您对该主题有更多见解:
Whats wrong with this simple 'double' calculation?
你可以做的一件事来解决你的问题是使用以下方法四舍五入错误:
roundToDecimal( 34 - 64*0.4 -7*1.2 , 14 )
这会将您的数字四舍五入到小数点后 14 位,从而消除不准确之处。
我有一个初始值的变量:34-640.4-71.2.
它应该出现0,而不是结果是否定的。你能告诉我原因吗?谢谢
这与变量在 Java 中的存储方式有关。
double
变量精确到一定的小数位数。在你的等式中,虽然 none 的部分超过小数点后一位,但四舍五入是以二进制格式完成的,导致小数点后第 16 位出现这种非常小的误差。
-1.776E-15 等于 -0.000000000000001776.
这是一个有趣的讨论帖,可以让您对该主题有更多见解:
Whats wrong with this simple 'double' calculation?
你可以做的一件事来解决你的问题是使用以下方法四舍五入错误:
roundToDecimal( 34 - 64*0.4 -7*1.2 , 14 )
这会将您的数字四舍五入到小数点后 14 位,从而消除不准确之处。