目录

解决java.lang.ArithmeticException-Non-terminating-decimal-expansion-no-exact-representable-decimal

目录

解决:java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal

1、出现报错:

https://i-blog.csdnimg.cn/blog_migrate/197bfc97f23522e3853dd9190dbd9db6.png

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!!!!