除 BigDecimal 值时出错:java.lang.ArithmeticException:非终止小数扩展;没有精确可表示的十进制结果

Error while dividing BigDecimal value : java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result

我参考了 this 并对 BigDecimal 值进行了四舍五入,然后我也遇到了上述错误。请找到下面提到的代码。提前致谢:

BigDecimal val1 = new BigDecimal(494.10000001).setScale(8, BigDecimal.ROUND_UP);
BigDecimal val2 = new BigDecimal(693189.38625000).setScale(8, BigDecimal.ROUND_UP);
BigDecimal result = val1.divide(val2);
System.out.println(result);

答案就在那post,而且还说了很多次:

a.divide(b, 8, RoundingMode.HALF_EVEN);

为你的除法语句试试这个,(为了你的精度,比例是 8)。 你现在正在做的是除以两个大的小数,结果是一个超大的小数答案,而你没有控制精度。

请注意 divide 方法有其自己的可选舍入模式参数:

BigDecimal result=val1.divide(val2, BigDecimal.ROUND_UP);