异常信息
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); }