1、BigDecimal對象不要構造Double類型小數
比如:
BigDecimal num5 = new BigDecimal(2.225667);
//會損失經度,打印結果:2.225667000000000061987748267711140215396881103515625
System.out.println(num5);
應該改爲寫法:
BigDecimal num5 = new BigDecimal("2.225667");
或者不是double類型的也可以,例如:
BigDecimal num2 = new BigDecimal(2);//這種寫法是可以的
2、多個BigDecimal相加減乘除的結果可能出現類似:
100438.137000000000000002
100438.1370000000
這樣的結果。
觀察過程,比如代碼:
BigDecimal num1 = new BigDecimal("54432.30000122");
BigDecimal num2 = new BigDecimal("5.3100440");
BigDecimal result = num1.add(num2);
//結果爲54437.61004522
System.out.println(result);
//結果爲54437.6100
System.out.println(result.setScale(4,BigDecimal.ROUND_FLOOR));
//結果爲54437.61
System.out.println(result.setScale(4,BigDecimal.ROUND_FLOOR).stripTrailingZeros());
//假如位數過多有時間會變爲科學計數法,加 toPlainString()則控制不會出現科學計數法
System.out.println(result.setScale(4,BigDecimal.ROUND_FLOOR).stripTrailingZeros().toPlainString());