如何在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
