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

Logo

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

更多推荐