对于 Double/Float,从十进制转换为二进制表示形式时,会存在一些舍入误差和精度损失。例如,将 float 设置为“6.1”,然后再次打印出来,您可能会得到类似于“6.099999904632568359375”的报告值。检查 2 个 Double 对象的相等性的更好选择是:使用 BigDecimal 或 (Math.abs(double1 - double2) < epsilon)
小智 5
有了番石榴,您将拥有:
DoubleMath.fuzzyEquals(double a, double b, double tolerance)
Run Code Online (Sandbox Code Playgroud)
和
DoubleMath.fuzzyCompare(double a, double b, double tolerance)
Run Code Online (Sandbox Code Playgroud)
它们比编写“Math.abs(ab) <= EPSILON”更容易使用且更正确。它们涵盖了 Double.NaN 和无穷大的情况。
| 归档时间: |
|
| 查看次数: |
15191 次 |
| 最近记录: |