Caused by: java.lang.ArithmeticException: Rounding necessary fastjson
时间: 2024-06-13 10:08:15 浏览: 258
Tess, if broken it is fix it you should
根据提供的引用[1],出现了java.lang.ArithmeticException: Rounding necessary异常,这是因为在进行BigDecimal的除法运算时,除不尽的情况下需要进行四舍五入,但是没有指定保留小数位数或者保留小数位数不够导致的。解决方法是在进行除法运算前,使用setScale()方法指定保留小数位数,例如:
```java
BigDecimal num1 = new BigDecimal("1");
BigDecimal num2 = new BigDecimal("3");
BigDecimal result = num1.divide(num2, 2, RoundingMode.HALF_UP);
```
上述代码中,将num1除以num2,保留2位小数,并且使用RoundingMode.HALF_UP进行四舍五入。
根据提供的引用,在使用BigDecimal.setScale()方法之前,需要判断newScale参数值是否小于0,因为setScale()方法的newScale参数必须大于等于0,否则会抛出IllegalArgumentException异常。例如:
```java
BigDecimal num = new BigDecimal("0.0004");
int scale = -1;
if (scale >= 0) {
num = num.setScale(scale);}
```
上述代码中,如果scale小于0,则不会调用setScale()方法。
阅读全文