java - 一个 BigDecimal 约等于另一个 BigDecimal

标签 java precision bigdecimal

我广泛使用 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/

相关文章:

java - 使用 Scanner 填充对象的 ArrayList

Java - 将数组值传递给第二个数组

java - 如何从 Recycler View onClick 缓存 WebView Activity 的多个 URL

c# - 除非我打印一个值,否则发布和 Debug模式会给出不同的结果

comparison - 测试 float 是否等于 0.0 是否安全?

java - 使 BigDecimal 截断而不是舍入

java.lang.IllegalMonitorStateException : object not locked by thread before wait() 异常

Python 3.3.5 浮点格式精度

c# - 非常非常大的 C# float

java - 欢迎就创建我自己的 Swing 组件提出建议