如何在Java中检查BigDecimal变量== 0?

我有以下Java代码;

BigDecimal price; // assigned elsewhere

if (price.compareTo(new BigDecimal("0.00")) == 0) {

return true;

}

编写if条件的最佳方法是什么?

回答:

使用compareTo(BigDecimal.ZERO)代替equals()

if (price.compareTo(BigDecimal.ZERO) == 0) // see below

BigDecimal常量进行比较BigDecimal.ZERO避免了必须构造new

BigDecimal(0)每个执行。

仅供参考,BigDecimal也有常量BigDecimal.ONEBigDecimal.TEN为您提供方便。


回答:

您无法使用的原因BigDecimal#equals()是它考虑了

比例

new BigDecimal("0").equals(BigDecimal.ZERO) // true

new BigDecimal("0.00").equals(BigDecimal.ZERO) // false!

因此它不适合用于纯粹的数字比较。但是,BigDecimal.compareTo()比较时不考虑规模:

new BigDecimal("0").compareTo(BigDecimal.ZERO) == 0 // true

new BigDecimal("0.00").compareTo(BigDecimal.ZERO) == 0 // true

以上是 如何在Java中检查BigDecimal变量== 0? 的全部内容, 来源链接: utcz.com/qa/397988.html

回到顶部