Non-terminating decimal expansion; no exact representable decimal result的处理
时间: 2023-11-21 15:58:36 浏览: 206
2022年优秀-部署企业网的互联网出口.pptx
当使用BigDecimal进行精确计算时,如果出现Non-terminating decimal expansion; no exact representable decimal result异常,可以通过指定舍入模式来解决。舍入模式可以在调用divide方法时作为参数传递。常见的舍入模式有:
1.ROUND_UP:向远离零的方向舍入。
2.ROUND_DOWN:向接近零的方向舍入。
3.ROUND_CEILING:向正无穷方向舍入。
4.ROUND_FLOOR:向负无穷方向舍入。
5.ROUND_HALF_UP:四舍五入,如果舍弃部分>= 0.5,则向远离零的方向舍入。
6.ROUND_HALF_DOWN:四舍五入,如果舍弃部分> 0.5,则向远离零的方向舍入。
7.ROUND_HALF_EVEN:如果舍弃部分左边的数字为偶数,则向远离零的方向舍入;否则,向接近零的方向舍入。
8.ROUND_UNNECESSARY:如果存在非精确结果,则抛出ArithmeticException。
例如,我们可以使用ROUND_HALF_UP舍入模式来解决Non-terminating decimal expansion; no exact representable decimal result异常:
```java
BigDecimal a = new BigDecimal("1");
BigDecimal b = new BigDecimal("3");
BigDecimal c = a.divide(b, 10, RoundingMode.HALF_UP);
System.out.println(c);
```
上述代码将1除以3,并将结果舍入到小数点后10位,使用ROUND_HALF_UP舍入模式。这样就可以避免Non-terminating decimal expansion; no exact representable decimal result异常的出现。
阅读全文