
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
小数第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
小数第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
小数第1位を切り上げた結果 : 1001.000
小数第2位を切り上げた結果 : 1000.200
さいごに
四捨五入や切り捨て・切り上げというのは、金額を扱うシステムだと使う場面も多いのではないでしょうか。
まさにこういうことはBigDecimalの一番の強みだと思いますので、積極的に使っていくようにしましょう!
それでは!
この記事はお役に立てましたか?
お役に立てたことがあればシェアしていただけると嬉しいです!