我广泛使用 BigDecimals。我经常需要进行长时间的计算,然后比较结果。由于这些漫长的计算,答案不是 1
而是0.9999999...
。这就是为什么我无法精确比较 BigDecimals,而只能比较某个错误。
如何检查一个 BigDecimal 是否位于另一个 BigDecimal 的 epsilon 范围内?
备注:我已经知道 answer.subtract(expected).abs().compareTo(epsilon) < 0
。但我必须一遍又一遍地写它,并且我正在寻找一种更简单的方法来做到这一点。
最佳答案
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
}
关于java - 一个 BigDecimal 约等于另一个 BigDecimal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48148178/