我有以下代码在Java;

BigDecimal price; // assigned elsewhere

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

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


当前回答

另外,我认为值得一提的是,BigDecimal类中的equals和compareTo方法的行为彼此不一致。

这基本上意味着:

BigDecimal someValue = new BigDecimal("0.00");
System.out.println(someValue.compareTo(BigDecimal.ZERO) == 0); // true
System.out.println(someValue.equals(BigDecimal.ZERO)); // false

因此,您必须非常小心someValue变量中的比例,否则您将得到意想不到的结果。

其他回答

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

BigDecimal price;

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

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

我通常使用以下方法:

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

有一个常数,你可以检查:

someBigDecimal.compareTo(BigDecimal.ZERO) == 0

只是想在这里分享一些有用的kotlin扩展

fun BigDecimal.isZero() = compareTo(BigDecimal.ZERO) == 0
fun BigDecimal.isOne() = compareTo(BigDecimal.ONE) == 0
fun BigDecimal.isTen() = compareTo(BigDecimal.TEN) == 0