「Java」BigDecimalのsetScaleメソッドで小数点を四捨五入(切り捨て、切り上げ)するサンプル

2020年11月4日

説明
1.public static final int ROUND_FLOOR
負の無限大に近づくように丸めるモードです。
2.public static final int ROUND_HALF_UP
「もっとも近い数字」に丸める丸めモードです(ただし、両隣りの数字が等距離の場合は切り上げます)。
3.public static final int ROUND_DOWN
破棄される小数部に先行する桁を増分しません(つまり切り捨て)
Javaコード

package com.arkgame.study.java.cft;

import java.math.BigDecimal;

public class BigDeStrDemo {

      private static final int scaleInt = 3;
      private static String opStr = "678.32189";

      public static void main(String[] args) {
            //string ->Bigdecimal
            BigDecimal bd = new BigDecimal(opStr);

            BigDecimal resA = change(bd, BigDecimal.ROUND_FLOOR);
            System.out.println("小数第4位を切り捨て(ROUND_FLOOR): " + resA);

            BigDecimal resB = change(bd, BigDecimal.ROUND_HALF_UP);
            System.out.println("小数第4位を四捨五入(ROUND_HALF_U): " + resB);

            BigDecimal resC = change(bd, BigDecimal.ROUND_DOWN);
            System.out.println("小数第4位を切り捨て(ROUND_DOWN): " + resC);

            BigDecimal resD = change(bd, BigDecimal.ROUND_UP);
            System.out.println("小数第4位を切り上げ(ROUND_UP): " + resD);

      }

      //method definition
      public static BigDecimal change(BigDecimal bd, int roundingMode) {
            BigDecimal res;
            res = bd.setScale(scaleInt, roundingMode);
            return res;

      }
}

結果
小数第4位を切り捨て(ROUND_FLOOR): 678.321
小数第4位を四捨五入(ROUND_HALF_U): 678.322
小数第4位を切り捨て(ROUND_DOWN): 678.321
小数第4位を切り上げ(ROUND_UP): 678.322

Java

Posted by arkgame