Java BigDecimalで除算したらArithmeticException

Java BigDecimalで除算したらArithmeticException

永遠に割り切れない除算でArithmeticExceptionが発生します。

解決策としては、丸めてください。

BigDecimal bd = BigDecimal.valueOf(10);
 
BigDecimal test = bd.divide(BigDecimal.valueOf(3), 0, RoundingMode.HALF_UP);
※スケール(第二引数)には少数点以下の桁数を指定

これで例外が発生しなくなります。

丸め方は以下のようになります。

CEILING 正の無限大に近づくように丸めるモードです。
DOWN 0 に近づくように丸めるモードです。
_FLOOR 負の無限大に近づくように丸めるモードです。
_HALF_DOWN 「もっとも近い数字」に丸めるモードです。
HALF_EVEN 「もっとも近い数字」に丸める丸めモードです。
ROUND_HALF_UP 「もっとも近い数字」に丸めるモードです。
UNNECESSARY 要求される演算の結果が正確であり、丸めが必要でないことを表す丸めモードです。
UP 0 から離れるように丸めるモードです。

javaカテゴリの最新記事