「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コード

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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;
}
}
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; } }
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