我正在这样做:

(obj.getValue().divide(weight)).setScale(3, RoundingMode.HALF_DOWN)


我收到此错误:


java.lang.ArithmeticException:非终止十进制扩展;没有
精确可表示的十进制结果。


我需要在哪里放置setScale?

谢谢

最佳答案

异常来自divide方法,因此您无法在执行后更改它来修复它。实际上,您应该将MathContext作为第二个参数传递给divide方法本身:

(obj.getValue().divide(weight, new MathContext(3, RoundingMode.HALF_DOWN)));


这样,您明确地说要使用HALF_DOWN舍入模式将保留3位数字相除。

08-17 18:10