我正在这样做:
(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位数字相除。