解决java.lang.ArithmeticException-Non-terminating-decimal-expansion-no-exact-representable-decimal
目录
解决:java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal
1、出现报错:
2、查询到日志如下:
java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
at java.math.BigDecimal.divide(BigDecimal.java:1690) ~[?:1.8.0_112]
at com.tyche.spd.utils.SpdUtils.getPackageNumbersFormat(SpdUtils.java:356) ~[classes/:?]
3、找到代码:
BigDecimal number2 = new BigDecimal(commPackageList.get(0).getPackageConversionCoefficient()).divide(new BigDecimal(commPackageList.get(1).getPackageConversionCoefficient()));
4、分析原因:
原因是BigDecimal除法小数无限循环导致的。我们可以向下取整或者向上取整。只要达到不无限循环就可以了。
5、修改代码:
BigDecimal number2 = new BigDecimal(commPackageList.get(0).getPackageConversionCoefficient()).divide(new BigDecimal(commPackageList.get(1).getPackageConversionCoefficient()), 0, BigDecimal.ROUND_HALF_UP);
到这里就解决问题了。
over!!!!