如何检查Java中的BigDecimal变量是否== 0?
2022-08-31 05:26:44
我在Java中有以下代码;
BigDecimal price; // assigned elsewhere
if (price.compareTo(new BigDecimal("0.00")) == 0) {
return true;
}
编写 if 条件的最佳方法是什么?
我在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.ONE
和BigDecimal.TEN
,为您提供方便。BigDecimal
你不能使用 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