一个 BigDecimal 约等于另一个 BigDecimal

Тим*_*ков 2 java precision bigdecimal

我广泛使用 BigDecimals。我经常需要进行长时间的计算,然后比较结果。由于这些漫长的计算,答案不是1而是0.9999999...。这就是为什么我无法精确比较 BigDecimals 而只能比较某个错误。

如何检查一个 BigDecimal 是否位于另一个 BigDecimal 的 epsilon 范围内?

备注:我已经知道了answer.subtract(expected).abs().compareTo(epsilon) < 0。但我必须一遍又一遍地写它,并且我正在寻找一种更简单的方法来做到这一点。

zhh*_*zhh 5

BigDecimal error = new BigDecimal(1e-5);    

BigDecimal a = new BigDecimal(100);
BigDecimal b = new BigDecimal(11.2);

if (a.subtract(b).abs().compareTo(error) < 0) {
    // a approximately equals b
}
Run Code Online (Sandbox Code Playgroud)