「Java」BigDecimalのsetScaleメソッドで小数点を四捨五入(切り捨て、切り上げ)するサンプル
説明
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