【Java】小数点の切り上げ・切り捨て・四捨五入をする

【Java】小数点の切り上げ・切り捨て・四捨五入をする

JavaMathクラスceilfloorroundメソッドdouble型などの変数の小数点以下を丸めて整数にする方法を紹介します。

それぞれのメソッドの処理

それぞれのメソッドの機能について紹介します。

ceilメソッド:切り上げ

ceilメソッドは小数の切り上げ(対象の数値以上の中で最も小さい整数値を返す)を行います。戻り値はdouble型で返されます。

ceilメソッドの書式例
1Math.ceil(1.5); // 2.0が返ってくる

引数がNaN、無限大、正または負の0、の場合は、引数と同じ値が返されます。

floorメソッド:切り捨て

floorメソッドは小数の切り捨て(対象の数値以下の中で最も大きい整数値を返す)を行います。戻り値はdouble型で返されます。

floorメソッドの書式例
1Math.floor(1.5); // 1.0が返ってくる

引数がNaN、無限大、正または負の0、の場合は、引数と同じ値が返されます。

roundメソッド:四捨五入

roundメソッドは小数を小数第1位で四捨五入します。戻り値はintlong型で返されます。double型の場合はlong型で、float型の場合はint型の返り値になります。上2つのメソッドとは返り値の型が異なるので注意しましょう。

roundメソッドの書式例
1Math.round(1.5); // 2が返ってくる

引数がNaNの場合は0が返されます。

メソッドの使用例

それぞれのメソッドの使用例をサンプルコードで示します。小数第2位以下で四捨五入を行いたい時は、一度桁上げを行ってから四捨五入し、その後桁下げをする必要があります。

RealNumTest.java
 1public class RealNumTest {
 2  public static void main(String[] args) {
 3    double d1 = 0.5;
 4    double d2 = 2.5;
 5    double d3 = 2.4;
 6    double d4 = 1.15;
 7
 8    // 小数点以下を切り上げする
 9    System.out.println(d1 + "の切り上げ:" + Math.ceil(d1));
10    System.out.println(-d1 + "の切り上げ:" + Math.ceil(-d1));
11
12    // 小数以下を切り捨てする
13    System.out.println(d1 + "の切り上げ:" + Math.floor(d1));
14    System.out.println(-d1 + "の切り捨て:" + Math.floor(-d1));
15
16    // 小数第1位で四捨五入する
17    System.out.println(d2 + "の四捨五入:" + Math.round(d2));
18    System.out.println(-d2 + "の四捨五入:" + Math.round(-d2));
19    System.out.println(d3 + "の四捨五入:" + Math.round(d3));
20    System.out.println(-d3 + "の四捨五入:" + Math.round(-d3));
21
22    // 小数第2位で四捨五入する
23    System.out.println(d4 + "の四捨五入(小数第2位):" + ((double) Math.round(d4 * 10)) / 10);
24  }
25}

実行結果が以下になります。

出力結果
10.5の切り上げ:1.0
2-0.5の切り上げ:-0.0
30.5の切り上げ:0.0
4-0.5の切り捨て:-1.0
52.5の四捨五入:3
6-2.5の四捨五入:-2
72.4の四捨五入:2
8-2.4の四捨五入:-2
91.15の四捨五入(小数第2位):1.2

それぞれ小数点以下を丸めた整数に変換されました。


切り捨て・切り上げの覚え方ですが、ceilは「天井」という意味なので切り上げ、floorは「床」という意味なので切り捨てという風に覚えましょう。

以上で記事を終わりにします。

参考文献