【发布时间】:2018-01-08 10:14:25
【问题描述】:
我广泛使用 BigDecimals。我经常需要进行长时间的计算,然后比较结果。由于这些冗长的计算,答案不是1,而是0.9999999...。这就是为什么我不能准确地比较 BigDecimals 而只能比较某个错误。
如何检查一个 BigDecimal 是否位于另一个 BigDecimal 的 epsilon 内?
备注:我已经知道answer.subtract(expected).abs().compareTo(epsilon) < 0。但是我必须一遍又一遍地写它,我正在寻找一种更简单的方法来做到这一点。
【问题讨论】:
-
减去并与您的ε进行比较,这不会太难吧?
-
如果您的计算不准确,为什么不直接使用
double? Commons Math 有一个 utility library 用于将浮点数与 epsilon 进行比较。 -
你需要图书馆做什么?只需将差异与您的 epsilon 而不是与 0 进行比较,您就完成了。
-
@Zinki,我知道这种方式,我要求一种更优雅的方式来做到这一点
-
如果你不想一遍又一遍地写一些重要的东西(你不应该这样做),你应该把它放在一个方法中,然后调用那个方法。
标签: java precision bigdecimal