使用数字计算工具Bigdecimal时,出现java.lang.ArithmeticException: Rounding necessary解决以及解析
在进行Bigdecimal进行计算并且设置精度时出现错误:java.lang.ArithmeticException: Rounding necessary
问题解析-可能出现的问题的原因有:
(1)使用BigDecimal.setScale(int newScale)方法时,newScale参数值小于0,导致报错
解决方式:判断newScale的大小再进行设置精度;如
Integer newScale = -1;
BigDecimal num = new BigDecimal("0.0008");
if ( newScale > 0 ) {
num.setScale(newScale );
(2)对BigDecimal对象设置了精度,但是没有设置取舍方式,会报这个错误(大多数是这种情况)
解决方式:设置精度时添加取舍方式;如
Bigdecimal num = new Bigdecimal(123.45).setScale(2);
修改为:
Bigdecimal num = new Bigdecimal(123.45).setScale(2,,BigDecimal.ROUND_HALF_UP);