BigDecimal建立初始化值型別對比
阿新 • • 發佈:2019-01-09
當初始化String型別和double型別,入參值相同,對比輸出值
輸出結果:BigDecimal bigDecimalStr = new BigDecimal("0.1"); BigDecimal bigDecimalDou = new BigDecimal(0.1); System.out.println("bigDecimalStr: " + bigDecimalStr); System.out.println("bigDecimalDou: " + bigDecimalDou); System.out.println("bigDecimalStr and bigDecimalDou: " + bigDecimalStr.compareTo(bigDecimalDou));
bigDecimalStr: 0.1
bigDecimalDou: 0.1000000000000000055511151231257827021181583404541015625
bigDecimalStr and bigDecimalDou: -1
對比結果,即String型別和double型別,double型別會使值變成64位失真。
在開發過程中,金額儲存小數的方式很常見,我們可以採用String入參的形式定義BigDecimal(如果可以的話,將金額弄成整數在顯示的時候除以位數,獲取真正的金額)
使用compareTo方法比較兩個金額的大小關係時:0表示相等,-1表示小於,1表示大於(上面那個例子就可以充分說明大小關係的比較)。在比較BigDecimal型別時,無法直接使用equals方法比較兩個值是否相等,不過可以採用將金額轉成字串通過equals方法比較大小。