1. 程式人生 > >BigDecimal建立初始化值型別對比

BigDecimal建立初始化值型別對比

當初始化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方法比較大小。