我有以下代码在Java;

BigDecimal price; // assigned elsewhere

if (price.compareTo(new BigDecimal("0.00")) == 0) {
    return true;
}

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


当前回答

你会想要使用equals(),因为它们是对象,并利用内置的ZERO实例:

if (selectPrice.equals(BigDecimal.ZERO))

请注意,.equals()将比例考虑在内,因此除非selectPrice与. zero的比例(0)相同,否则将返回false。

将比例从等式中剔除:

if (selectPrice.compareTo(BigDecimal.ZERO) == 0)

我应该指出,对于某些数学情况,0.00 != 0,这就是为什么我认为.equals()考虑了刻度。0.00表示百分位的精度,而0则不是那么精确。根据具体情况,您可能希望坚持使用.equals()。

其他回答

我通常使用以下方法:

if (selectPrice.compareTo(BigDecimal.ZERO) == 0) { ... }

你会想要使用equals(),因为它们是对象,并利用内置的ZERO实例:

if (selectPrice.equals(BigDecimal.ZERO))

请注意,.equals()将比例考虑在内,因此除非selectPrice与. zero的比例(0)相同,否则将返回false。

将比例从等式中剔除:

if (selectPrice.compareTo(BigDecimal.ZERO) == 0)

我应该指出,对于某些数学情况,0.00 != 0,这就是为什么我认为.equals()考虑了刻度。0.00表示百分位的精度,而0则不是那么精确。根据具体情况,您可能希望坚持使用.equals()。

if(price.floatValue() == 0){
   return true; //works for 0\0.0
}

对于你的例子,一个简单而更好的方法是:

BigDecimal price;

if(BigDecimal.ZERO.compareTo(price) == 0){
    
   //Returns TRUE

}
BigDecimal.ZERO.setScale(2).equals(new BigDecimal("0.00"));