异常信息
java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
从上面的异常信息可以看出是在进行decimal 类型的计算时候出错了,代码如下
if(yearincome!=null){
BigDecimal num = new BigDecimal(12.00);
BigDecimal monthIncom = yearincome.divide(num);
mainLoanMessageVO.setMonthIncome(monthIncom);
}
因为BigDecimal类型的计算需要使用divide函数,没有指定精确到小数点后几位造成的,导致不能整除而出现无限循环,这时候查看divide方法
* @param divisor value by which this {@code BigDecimal} is to be divided. 需要进行计算的值
* @param scale scale of the {@code BigDecimal} quotient to be returned. 需要返回的商的小数点位数
* @param roundingMode rounding mode to apply. roundingMode适用的舍入模式
public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
解决方法,设置返回小数点位和舍入模式 即可
if(yearincome!=null){
BigDecimal num = new BigDecimal(12.00);
BigDecimal monthIncom = yearincome.divide(num,2,BigDecimal.ROUND_HALF_UP);
mainLoanMessageVO.setMonthIncome(monthIncom);
}
测试结果