我这样做:
(obj.getValue().divide(weight)).setScale(3, RoundingMode.HALF_DOWN)
我收到此错误:
java.lang.ArithmeticException:非终止十进制扩展;没有 精确可表示的十进制结果。
我需要在哪里放置setScale?
由于
答案 0 :(得分:1)
或者您仍然拥有BigDecimal的其他公共方法:
public BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode)
应用于您的示例:
obj.getValue().divide(weight, 3, RoundingMode.HALF_DOWN);
答案 1 :(得分:0)
异常来自combinedCount(arr, ["Windows", "Linux"])
// returns 360
方法,因此您无法修复执行之后的某些内容。实际上,您应该将divide
作为第二个参数传递给MathContext
方法本身:
divide
通过这种方式,您明确表示要使用(obj.getValue().divide(weight, new MathContext(3, RoundingMode.HALF_DOWN)));
舍入模式保持3位数。