应用 BigDecimal 的进行除法运算时,
public BigDecimal divide(BigDecimal divisor)
当遇到后果为无限小数时,如 1 / 3 这种状况,如果不指定保留小数位数,就是出现异常:
java.lang.ArithmeticException:
Non-terminating decimal expansion;
no exact representable decimal result.
at java.math.BigDecimal.divide(BigDecimal.java:1693)
因而须要应用 divide 的重载办法:
public BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode)
scale
为要保留的小数位数 roundingMode
为小数保留形式