在Java中如何比较这些双打序列都“大致相等”?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (10)

我在java中有一个返回双精度数的方法,我想比较每次调用方法时返回的每个双精度数(例如5次),这样我就可以得出结论,每次返回的数字几乎相同。

我怎样才能做到这一点?

提问于
用户回答回答于

你必须先决定“几乎相同”的含义。例如,在java.lang.Math被调用的ulp()中有一个方法,给定一个double,返回该double和next之间的距离; 即该数字与其他数字之间可能的最小差异。您可以简单地比较两个双打之间的差异以及调用该方法的结果。

另一方面,也许你希望两个数字在彼此的1%以内。在这种情况下,进行相同的计算,但使用乘以的第一个​​数字0.01而不是ulp()最大可接受距离。

用户回答回答于
public static boolean almostEqual(double a, double b, double eps){
    return Math.abs(a-b)<eps;
}

eps是衡量平等的地方。

扫码关注云+社区