背景:
將數據庫統計的數據,封裝成了兩個BigDecimal,此時要將兩個BigDecimal進行運算。其中有一個沒有數據的話,會報null(不管null值在前在后)
先上解決:
我把數據庫的數據進行了個判空,嘻嘻嘻,COALESCE(值,0),如果是沒有數據的就返回0
嘗試(天真的我以為他會自己把null 給我轉成0(如果這樣的話為什么還報空指針!),所以就在找判0的方法):
使用 b.compareTo(BigDecimal.ZERO)==0 來判空(b為接收到的返回值) X報錯
那反過來BigDecimal.ZERO.compareTo(b)==0 X報錯 天真
課外:
不過百度的過程中了解了
判斷BigDecimal是否等於0的方法
用equals比較的話,就是轉成了字符串來比較,會出現 Bigdecimal b = new Bigdecimal("0") 和 Bigdecimal c = new Bigdecimal("0.0")==>返回就是false
推薦使用:b.compareTo(BigDecimal.ZERO)==0
BigDecimal 的運算
add(BigDecimal) BigDecimal對象中的值相加,然后返回這個對象。
subtract(BigDecimal) BigDecimal對象中的值相減,然后返回這個對象。
multiply(BigDecimal) BigDecimal對象中的值相乘,然后返回這個對象。
divide(BigDecimal) BigDecimal對象中的值相除,然后返回這個對象。
toString() 將BigDecimal對象的數值轉換成字符串。
doubleValue() 將BigDecimal對象中的值以雙精度數返回。
floatValue() 將BigDecimal對象中的值以單精度數返回。
longValue() 將BigDecimal對象中的值以長整數返回。
intValue() 將BigDecimal對象中的值以整數返回。