【发布时间】:2021-12-09 10:45:08
【问题描述】:
【问题讨论】:
-
请考虑图片中的等式。谢谢
标签: anylogic
【问题讨论】:
标签: anylogic
这与变量在 Java 中的存储方式有关。
double 变量精确到一定数量的小数位数。在您的等式中,虽然它的任何部分都没有超过 1 位小数,但以二进制格式进行舍入会导致小数点后 16 位出现这种非常小的误差。
-1.776E-15 等于 -0.000000000000001776。
这是一个有趣的话题,可以让您对该主题有更多的见解:
Whats wrong with this simple 'double' calculation?
您可以做的一件事来克服您的问题是使用以下方法来弥补错误:
roundToDecimal( 34 - 64*0.4 -7*1.2 , 14 )
这会将您的数字四舍五入到小数点后 14 位,从而消除不准确性。
【讨论】: