1. 此錯誤僅在使用BigDecimal做除法時,且0/0的情況下才會提示。
x/0時,僅提示Division by zero。
2. BigDecimal判斷一個值是否為0時,不能使用equals,因為equals會比較值的大小和精度的大小,即0.00 和 0.000是不同的。
需要使用 x.compareTo(BigDecimal.ZERO) == 0 來判斷。
3. 且使用divide做除法時,標准的形式為 x.divide(y, scale,rm)
如果不指明scale的值,會默認使用 x.scale - y.scale的值替代,如果此時值為負數,則會報錯 Division undefined。
且不指定scale 和 rm四舍五入方式,如果遇到 1/3 這種除不盡的情況,會報如下錯誤:
Non-terminating decimal expansion; no exact representable decimal result.