今天实际开发中碰到这个报错:
java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result
仔细检查后发现原因是:计算结果是无限循环小数...
要设置取舍方法,如下,调用它的重载方法。第2个参数是小数点后保留几位,最后一个是保留的精度。
原代码:
modulusScore = (originScore.subtract(minModulus)).divide(maxModulus.subtract(minModulus)).multiply(v1.subtract(v2)).add(v2);
修改后:
modulusScore = (originScore.subtract(minModulus)).divide(maxModulus.subtract(minModulus), 4, BigDecimal.ROUND_HALF_DOWN).multiply(v1.subtract(v2)).add(v2);