关于使用num.divide()报java.lang.ArithmeticException: Non-terminating decimal expansion; no exact represen

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/BinshaoNo_1/article/details/83084434

在项目中使用BigDecimal的属性divide()计算数据,报出了java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result异常,在网上搜索了一下,是因为小数点除不尽的原因,保留相应的位数就可以了。

BigDecimal num = num1.divide(num2,2);给这个属性加上相应的保留位数就可以了。

后续:加个保留位数之后,发现是报异常了,可是又出现的新的问题,看数据的时候,发现计算的不对,自己也计算了一下,发现不对,例如:差值是1,要除3,除不尽的情况,用num1.divide(num2,2)这种情况,发现不能保留位数,又在网上搜了一下,发现有类似除不尽的情况,但是用法不同:num.divide(num2,6,BigDecimal.ROUND_HALF_UP),这里多了一个参数,试了一下,效果良好,可以解决问题

猜你喜欢

转载自blog.csdn.net/BinshaoNo_1/article/details/83084434
今日推荐