1.我之前用來判斷Bigdecimal類型是否等於0的方法
b.equals(BigDecimal.ZERO);
用equals方法和BigDecimal.ZERO進行比較。
2.上面方法存在的問題
有一天,調用這個兩個數字減過之后為零,然后和零用這句代碼的時候,傳入的確實是0,但卻返回false
查看源代碼發現:

decimal的equals方法不僅僅比較值的大小是否相等,首先比較的是scale(scale是bigdecimal的保留小數點位數,比如 new Bigdecimal("1.001"),scale為3),也就是說,不但值得大小要相等,保留位數也要相等,equals才能返回true。
Bigdecimal b = new Bigdecimal("0") 和 Bigdecimal c = new Bigdecimal("0.0"),用equals比較,返回就是false。
Bigdecimal.ZERO的scale為0。
所以,用equals方法要注意這一點。
3.用b.compareTo(BigDecimal.ZERO)==0,可以比較是否等於0,返回true則等於0,返回false,則不等於0