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