Bigdecimal類型判斷是否等於0(用equals方法的坑)


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM