金額的數據類型是BigDecimal
通過BigDecimal的divide方法進行除法時當不整除,出現無限循環小數時,就會拋異常的,異常如下:java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. at java.math.BigDecimal.divide(Unknown Source)
應用場景:一批中供客戶的單價是1000元/年,如果按月計算的話1000/12=83.3333333333....
解決之道:就是給divide設置精確的小數點divide(xxxxx,2, BigDecimal.ROUND_HALF_EVEN)
public static void main(String[] args) {
BigDecimal a;
BigDecimal b;
a = new BigDecimal(3);
b = new BigDecimal(81);
System.out.print(a.divide(b, 2, RoundingMode.HALF_UP));
}