當初始化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方法比較大小。
原文地址:https://blog.csdn.net/qq_27255679/article/details/79062415