【问题标题】:why does this variable return negative value?为什么这个变量返回负值?
【发布时间】:2021-12-09 10:45:08
【问题描述】:

我有一个初始值的变量:34-640.4-71.2.

它应该显示为 0,而不是结果是否定的。你能告诉我原因吗?谢谢

【问题讨论】:

  • 请考虑图片中的等式。谢谢

标签: anylogic


【解决方案1】:

这与变量在 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 位,从而消除不准确性。

【讨论】:

    猜你喜欢
    • 2013-02-08
    • 1970-01-01
    • 2018-01-29
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多