Java11 RoundingModeでBigDecimalの小数点切り上げ・切り捨てサンプル
環境
JavaSE 11
Eclipse 4.26.0
構文
1.RoundingMode.UP
0 から離れるように丸めるモードです
2.RoundingMode.HALF_UP
両隣りの数字が等距離の場合は切り上げられます
3.RoundingMode.HALF_EVEN
両隣りの数字が等距離の場合は偶数側に丸められます
4.RoundingMode.FLOOR
負の無限大に近づくように丸めるモードです。
5.RoundingMode.DOWN
0 に近づくように丸めるモードです。いわゆる「切り捨て」です。
使用例
package com.arkgame.study;
import java.math.BigDecimal;
import java.math.RoundingMode;
public class DemoTest {
public static void main(String[] args) {
// DOWN
BigDecimal bd1 = new BigDecimal("123.5");
BigDecimal res1 = bd1.setScale(0, RoundingMode.DOWN);
System.out.println("DOWN切り捨て: " + res1.toPlainString());
// FLOOR
BigDecimal bd2 = new BigDecimal("-10.5");
BigDecimal res2 = bd2.setScale(0, RoundingMode.FLOOR);
System.out.println("FLOOR負の無限大: " + res2.toPlainString());
// HALF_EVEN
BigDecimal bd3 = new BigDecimal("11.6");
BigDecimal res3 = bd3.setScale(0, RoundingMode.HALF_EVEN);
System.out.println("HALF_EVEN偶数側に丸め: " + res3.toPlainString());
// HALF_UP
BigDecimal bd4 = new BigDecimal("12.5");
BigDecimal res4 = bd4.setScale(0, RoundingMode.HALF_UP);
System.out.println("HALF_UP切り上げ: " + res4.toPlainString());
}
}
package com.arkgame.study;
import java.math.BigDecimal;
import java.math.RoundingMode;
public class DemoTest {
public static void main(String[] args) {
// DOWN
BigDecimal bd1 = new BigDecimal("123.5");
BigDecimal res1 = bd1.setScale(0, RoundingMode.DOWN);
System.out.println("DOWN切り捨て: " + res1.toPlainString());
// FLOOR
BigDecimal bd2 = new BigDecimal("-10.5");
BigDecimal res2 = bd2.setScale(0, RoundingMode.FLOOR);
System.out.println("FLOOR負の無限大: " + res2.toPlainString());
// HALF_EVEN
BigDecimal bd3 = new BigDecimal("11.6");
BigDecimal res3 = bd3.setScale(0, RoundingMode.HALF_EVEN);
System.out.println("HALF_EVEN偶数側に丸め: " + res3.toPlainString());
// HALF_UP
BigDecimal bd4 = new BigDecimal("12.5");
BigDecimal res4 = bd4.setScale(0, RoundingMode.HALF_UP);
System.out.println("HALF_UP切り上げ: " + res4.toPlainString());
}
}
package com.arkgame.study; import java.math.BigDecimal; import java.math.RoundingMode; public class DemoTest { public static void main(String[] args) { // DOWN BigDecimal bd1 = new BigDecimal("123.5"); BigDecimal res1 = bd1.setScale(0, RoundingMode.DOWN); System.out.println("DOWN切り捨て: " + res1.toPlainString()); // FLOOR BigDecimal bd2 = new BigDecimal("-10.5"); BigDecimal res2 = bd2.setScale(0, RoundingMode.FLOOR); System.out.println("FLOOR負の無限大: " + res2.toPlainString()); // HALF_EVEN BigDecimal bd3 = new BigDecimal("11.6"); BigDecimal res3 = bd3.setScale(0, RoundingMode.HALF_EVEN); System.out.println("HALF_EVEN偶数側に丸め: " + res3.toPlainString()); // HALF_UP BigDecimal bd4 = new BigDecimal("12.5"); BigDecimal res4 = bd4.setScale(0, RoundingMode.HALF_UP); System.out.println("HALF_UP切り上げ: " + res4.toPlainString()); } }
実行結果
DOWN切り捨て: 123
FLOOR負の無限大: -11
HALF_EVEN偶数側に丸め: 12
HALF_UP切り上げ: 13