BigDecimal :java.lang.ArithmeticException

使用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为小数保留方式

你可能感兴趣的:(java)