使用数字计算工具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);

 

  

posted @ 2022-06-27 18:07  良辰没你虚设  阅读(2046)  评论(0编辑  收藏  举报