Skip to content

java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.

🏷️ Java

BigDecimal 运算时发生了如下异常:

java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.

参考 Non-terminating decimal expansion; no exact representable decimal result 解决了该问题。

原因是结果是无限小数时,必须指定小数点后的精度,否则就报这个异常。

解决办法就是调用 divide 方法时指定小数点后的精度。

代码如下:

java
BigDecimal num3 = num1.divide(num2,10,BigDecimal.ROUND_HALF_DOWN);

PS : 感觉 java 这点做的很不友好,难道不是应该使用 BigDecimal 最大精度作为计算结果吗?