[Java] BigDecimalで「四捨五入」「切り捨て」「切り上げ」する方法

java

BigDecimalの値の小数点以下を操作する方法を紹介します。

今回紹介する方法は、第何小数点を対象に「四捨五入」「切り捨て」「切り上げ」するかを指定することが可能です。

それではさっそく紹介していきます。

[スポンサーリンク]

四捨五入

BigDecimal bgd = new BigDecimal(1000.191);

// 小数点第3位まで表示する設定
DecimalFormat format = new DecimalFormat("#.#");
format.setMinimumFractionDigits(3);
format.setMaximumFractionDigits(3);

//四捨五入する
BigDecimal bgd1 = bgd.setScale(0, BigDecimal.ROUND_HALF_UP);
System.out.println("小数第1位で四捨五入した結果 : " + format.format(bgd1));

BigDecimal bgd2 = bgd.setScale(1, BigDecimal.ROUND_HALF_UP);
System.out.println("小数第2位で四捨五入した結果 : " + format.format(bgd2));
>実行結果
小数第1位で四捨五入した結果 : 1000.000
小数第2位で四捨五入した結果 : 1000.200

切り捨て

BigDecimal bgd = new BigDecimal(1000.191);

// 小数点第3位まで表示する設定
DecimalFormat format = new DecimalFormat("#.#");
format.setMinimumFractionDigits(3);
format.setMaximumFractionDigits(3);

//切り捨てする
BigDecimal bgd3 = bgd.setScale(0, BigDecimal.ROUND_DOWN);
System.out.println("小数第1位を切り捨てた結果 : " + format.format(bgd3));

BigDecimal bgd4 = bgd.setScale(1, BigDecimal.ROUND_DOWN);
System.out.println("小数第2位を切り捨てた結果 : " + format.format(bgd4));
>実行結果
小数第1位を切り捨てた結果 : 1000.000
小数第2位を切り捨てた結果 : 1000.100

切り上げ

BigDecimal bgd = new BigDecimal(1000.191);

// 小数点第3位まで表示する設定
DecimalFormat format = new DecimalFormat("#.#");
format.setMinimumFractionDigits(3);
format.setMaximumFractionDigits(3);

//切り上げする
BigDecimal bgd5 = bgd.setScale(0, BigDecimal.ROUND_UP);
System.out.println("小数第1位を切り上げた結果 : " + format.format(bgd5));

BigDecimal bgd6 = bgd.setScale(1, BigDecimal.ROUND_UP);
System.out.println("小数第2位を切り上げた結果 : " + format.format(bgd6));
>実行結果
小数第1位を切り上げた結果 : 1001.000
小数第2位を切り上げた結果 : 1000.200

さいごに

四捨五入や切り捨て・切り上げというのは、金額を扱うシステムだと使う場面も多いのではないでしょうか。

まさにこういうことはBigDecimalの一番の強みだと思いますので、積極的に使っていくようにしましょう!

それでは!