如何在Java中检查BigDecimal变量== 0?
我有以下Java代码;
BigDecimal price; // assigned elsewhereif (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.ONE
,BigDecimal.TEN
为您提供方便。
回答:
您无法使用的原因BigDecimal#equals()
是它考虑了
比例 :
new BigDecimal("0").equals(BigDecimal.ZERO) // truenew BigDecimal("0.00").equals(BigDecimal.ZERO) // false!
因此它不适合用于纯粹的数字比较。但是,BigDecimal.compareTo()
比较时不考虑规模:
new BigDecimal("0").compareTo(BigDecimal.ZERO) == 0 // truenew BigDecimal("0.00").compareTo(BigDecimal.ZERO) == 0 // true
以上是 如何在Java中检查BigDecimal变量== 0? 的全部内容, 来源链接: utcz.com/qa/397988.html