解决: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!!!!
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)