BigDecimal,与setScale有关

时间:2015-09-02 08:14:35

标签: java bigdecimal

我这样做:

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

我收到此错误:

  

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

我需要在哪里放置setScale?

由于

2 个答案:

答案 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位数。