Java 小数点以下の切り上げのサンプル(setScale)

JavaのBigDecimalクラスのsetScaleメソッドで、小数点以下を切り上げるサンプルです。

目次

仕様 小数点以下の桁数を丸めるsetScaleメソッド
  切り上げで使用する定数のRoundingMode.UP
サンプル 小数点以下の切り上げのサンプル
  小数第二位以降の切り上げ

小数点以下の桁数を丸めるsetScaleメソッド

public BigDecimal setScale(int newScale, RoundingMode roundingMode)
  • BigDecimalクラスは、小数点以下の計算を誤差なくできるクラスで、setScaleメソッドは、小数点以下の桁数を丸めます。
  • setScaleのスケールとは、小数点以下の桁数です。
  • 一つ目めの引数は、求める小数点以下の桁数をint型で指定します。
    例:小数第三位で切り上げる場合は、2を指定する
  • 二つ目の引数は、列挙型定数のRoundingMode.UPを指定します。切り上げを意味します。
  • 戻り値はBigDecimal型です。
  • 以下はJava8 API仕様のBigDecimalクラスのsetScaleメソッドのリンクです。
    https://docs.oracle.com/javase/jp/8/docs/api/java/math/BigDecimal.html#setScale-int-java.math.RoundingMode-

切り上げで使用する定数のRoundingMode.UP

public enum RoundingMode extends Enum<RoundingMode>
public static final RoundingMode UP
  • RoundingMode.UPは、列挙型の定数です。
  • 0から離れるように丸めます。切り上げする時に指定します。
    例:小数第一位で指定した場合
    2.1 → 3
    -2.1 → -3
  • 以下はJava8 API仕様のRoundingMode型のリンクです。
    https://docs.oracle.com/javase/jp/8/docs/api/java/math/RoundingMode.html
  • ROUND_UPは、Java9で非推奨になりましたので注意して下さい。

小数点以下の切り上げのサンプル

小数点以下の切り上げのサンプルです。

package test1;
import java.math.BigDecimal;
import java.math.RoundingMode;

public class Test1 {
	public static void main(String[] args) {
		double d1 = 12.2627;
		BigDecimal bd = new BigDecimal(String.valueOf(d1));
		
		// 小数第一位を切り上げ
		BigDecimal bd1 = bd.setScale(0, RoundingMode.UP);
		System.out.println(bd1.toPlainString()); //13
		System.out.println(bd1.doubleValue()); //13.0
	}
}

7行目は、double型の数値です。
8行目は、double型の数値をStringクラスのvalueOfメソッドで文字列に変換し、
それをBigDecimalクラスのコンストラクタの引数としてBigDecimal型にしています。
11行目のsetScaleメソッドの引数の0は小数第一位を指し、RoundingMode.UPは切り上げします。

12行目のtoPlainStringメソッドは、BigDecimal型をString型にして返します。
13行目のdoubleValueメソッドは、BigDecimal型をdouble型にして返します。

小数第二位以降の切り上げ

以下は、上記の12.2627の小数第二位以降の切り上げのサンプルです。


		// 小数第二位を切り上げ
		BigDecimal bd2 = bd.setScale(1, RoundingMode.UP);
		System.out.println(bd2.toPlainString()); //12.3
		System.out.println(bd2.doubleValue()); //12.3
		
		// 小数第三位を切り上げ
		BigDecimal bd3 = bd.setScale(2, RoundingMode.UP);
		System.out.println(bd3.toPlainString()); //12.27
		System.out.println(bd3.doubleValue()); //12.27

		// 小数第四位を切り上げ
		BigDecimal bd4 = bd.setScale(3, RoundingMode.UP);
		System.out.println(bd4.toPlainString()); //12.263
		System.out.println(bd4.doubleValue()); //12.263

toPlainStringメソッド

public String toPlainString()

doubleValueメソッド

public double doubleValue()

関連の記事

Java 小数点以下の四捨五入のサンプル(setScale)
Java 小数点以下の切り捨てのサンプル(setScale)
Java 切り上げのサンプル(ceil)
Java 切り捨てのサンプル(floor)
Java 四捨五入するサンプル(round)
Java 小数点がある計算のサンプル(BigDecimal)

△上に戻る