JavaのBigDecimalクラスのsetScaleメソッドで、小数点以下を四捨五入するサンプルです。
目次
仕様 | 小数点以下の桁数を丸めるsetScaleメソッド |
四捨五入で使用する定数のRoundingMode.HALF_UP | |
サンプル | 小数点以下の四捨五入のサンプル |
小数第二位以降の四捨五入 |
小数点以下の桁数を丸めるsetScaleメソッド
public BigDecimal setScale (int newScale, RoundingMode roundingMode) |
- BigDecimalクラスは、小数点以下の計算を誤差なくできるクラスで、setScaleメソッドは、小数点以下の桁数を丸めます。
- setScaleのスケールとは、小数点以下の桁数です。
- 一つ目めの引数は、求める小数点以下の桁数をint型で指定します。
例:小数第三位で四捨五入する場合は、2を指定する - 二つ目の引数は、列挙型定数のRoundingMode.HALF_UPを指定します。四捨五入を意味します。
- 以下はJava8 API仕様のBigDecimalクラスのsetScaleメソッドのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/math/BigDecimal.html#setScale-int-java.math.RoundingMode-
四捨五入で使用する定数のRoundingMode.HALF_UP
public enum RoundingMode extends Enum<RoundingMode> |
public static final RoundingMode HALF_UP |
- RoundingMode.HALF_UPは、列挙型の定数で、四捨五入する時に指定します。
- 以下はJava8 API仕様のRoundingMode型のリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/math/RoundingMode.html - ROUND_HALF_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.HALF_UP);
System.out.println(bd1.toPlainString()); //12
System.out.println(bd1.doubleValue()); //12.0
}
}
7行目は、double型の数値です。
8行目は、double型の数値をStringクラスのvalueOfメソッドで文字列に変換し、
それをBigDecimalクラスのコンストラクタの引数としてBigDecimal型にしています。
11行目のsetScaleメソッドの引数の0は小数第一位を指し、RoundingMode.HALF_UPは四捨五入します。
12行目のtoPlainStringメソッドは、BigDecimal型をString型にして返します。
13行目のdoubleValueメソッドは、BigDecimal型をdouble型にして返します。
小数第二位以降の四捨五入
以下は、上記の12.2627の小数第二位以降の四捨五入のサンプルです。
// 小数第二位を四捨五入
BigDecimal bd2 = bd.setScale(1, RoundingMode.HALF_UP);
System.out.println(bd2.toPlainString()); //12.3
System.out.println(bd2.doubleValue()); //12.3
// 小数第三位を四捨五入
BigDecimal bd3 = bd.setScale(2, RoundingMode.HALF_UP);
System.out.println(bd3.toPlainString()); //12.26
System.out.println(bd3.doubleValue()); //12.26
// 小数第四位を四捨五入
BigDecimal bd4 = bd.setScale(3, RoundingMode.HALF_UP);
System.out.println(bd4.toPlainString()); //12.263
System.out.println(bd4.doubleValue()); //12.263
toPlainStringメソッド
public String toPlainString() |
- BigDecimalクラスのメソッドです。
- BigDecimal型をString型にして返します。
- 以下はJava8 API仕様のtoPlainStringメソッドのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/math/BigDecimal.html#toPlainString--
doubleValueメソッド
public double doubleValue() |
- BigDecimalクラスのメソッドです。
- BigDecimal型をdouble型にして返します。
- 以下はJava8 API仕様のdoubleValueメソッドのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/math/BigDecimal.html#doubleValue--
関連の記事
Java 小数点以下の切り上げのサンプル(setScale)
Java 小数点以下の切り捨てのサンプル(setScale)
Java 切り上げのサンプル(ceil)
Java 切り捨てのサンプル(floor)
Java 四捨五入するサンプル(round)
Java 小数点がある計算のサンプル(BigDecimal)