【问题标题】:Can somebody explain what is meant by round-off error? [duplicate]有人可以解释舍入误差是什么意思吗? [复制]
【发布时间】:2019-03-02 13:22:22
【问题描述】:

在我的考试表中,它指出:x 是一个 double 类型的变量,它是正数,并且 (Math.pow(x,0.5) == Math.sqrt(x)) 由于四舍五入应该是假的错误。但是,我尝试了一些值,结果证明它们都是正确的。有对此的解释吗?

【问题讨论】:

  • 试试x = 1.000000000002Math.pow(x,0.5) = 1.000000000001,但Math.sqrt(x) = 1.0000000000009999
  • 问题应该是“可能是假的”而不是“应该是假的”。有许多值的表达式为真,但有些值为假。

标签: java double rounding pow sqrt


【解决方案1】:

问题在于浮点数学是违反直觉的。

例如,特定数字不能正确地表示为浮点数。

你写的是 0.2,但在运行时,结果显示为 0.1999999....

因此,处理浮点数的基本规则是永远不要使用 x==y,而是使用 epsilon delta,因此 (x-y)

换句话说:许多浮点数运算会产生“意想不到的”结果。因此,一个简单的 == 是不够的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 2019-06-29
    • 2019-11-07
    • 2015-10-05
    • 1970-01-01
    相关资源
    最近更新 更多