Javaでの切り上げ/切捨て/四捨五入:ceil / floor / roundメソッド

  • このエントリーをはてなブックマークに追加
  • Pocket

切り上げ、切捨て、四捨五入はJavaでプログラムを組んでいると、色々なところで必要になってくる。

それぞれMathクラスのceilメソッド、floorメソッド、roundメソッドを使用していくが、詳細をご紹介していこう。

Javaの切り上げの求め方

Javaによる切り上げ

切り上げとは,対象の数値より大きいか等しい整数値の中で、対象の数値との距離が最も小さい整数値を求めることだ。反対に難しいかもしれない。

例えば,「10.4」の小数点以下を切り上げると,「11」になる。これを,切り上げを求めるという。

Javaで切り上げを求めるためにはceilメソッドを利用する。

書き方の基本は簡単だ。

切り上げ = Math.ceil(対象となる数値)

Javaでの切り上げるための書き方の詳細を確認していこう。

ceilメソッド

ceilメソッドの引数に指定した値から切り上げを求める。引数に指定できる値はdouble型のみだ。

ceil(double a)

戻り値の型

public static double

内容

引数より大きいか等しい数学の整数で,最も小さな(負の最大に最も近い)double値を戻す。

■下記は特例となる

  • 引数がすでに数学の整数に等しければ,結果は引数と同じになる。
  • 引数がNaNまたは,無限大または,正のゼロまたは,負のゼロならば,結果は引数と同じになる。
  • 引数がゼロより小さくて,-1.0より大きければ,結果は負のゼロになる。

考慮点:Math.ceil(x)の値は,正確に-Math.floor(-x)の値である。

引数:a - 値

戻り値:aより大きいか等しくて数学の整数で,最も小さな(負の最大に最も近い)浮動小数点値を戻す。

Javaで切り上げを求めるサンプルプログラム

それでは実際にサンプルプログラムを確認してみよう。

public class CeilDouble {
    public static void main(String[] args) {
        double positiveValue100        = 10.0;//[1]
        double positiveValue104        = 10.4;//[2]
        double positiveValue105        = 10.5;//[3]
        double negativeValue100        = -10.0;//[4]
        double negativeValue105 = -10.5;//[5]
        double negativeValue106 = -10.6;//[6]
        double positiveInfinity        = Double.POSITIVE_INFINITY;//[7]
        double positiveZero            = 0.0;//[8]
        double negativeZero            = - 0.0;//[9]
        double negativeInfinity        = Double.NEGATIVE_INFINITY;//[10]
        double nanValue                = Double.NaN;//[11]
        double negativeValue005        = - 0.5;//[12]

        System.out.println("[13] 10.0 : " + Math.ceil(positiveValue100));
        System.out.println("[14] 10.4 : " + Math.ceil(positiveValue104));
        System.out.println("[15] 10.5 : " + Math.ceil(positiveValue105));
        System.out.println("[16] -10.0 : " + Math.ceil(negativeValue100));
        System.out.println("[17] -10.5 : " + Math.ceil(negativeValue105));
        System.out.println("[18] -10.6 : " + Math.ceil(negativeValue106));
        System.out.println("[19] NaN(数値でない値) : " + Math.ceil(nanValue));
        System.out.println("[20] 正の無限大 : " + Math.ceil(positiveInfinity));
        System.out.println("[21] 負の無限大 : " + Math.ceil(negativeInfinity));
        System.out.println("[22] 正のゼロ : " + Math.ceil(positiveZero));
        System.out.println("[23] 負のゼロ : " + Math.ceil(negativeZero));
        System.out.println("[24] -0.5 : " + Math.ceil(negativeValue005));
    }
}

実行結果

[13] 10.0 : 10.0
[14] 10.4 : 11.0
[15] 10.5 : 11.0
[16] -10.0 : -10.0
[17] -10.5 : -10.0
[18] -10.6 : -10.0
[19] NaN(数値でない値) : NaN
[20] 正の無限大 : Infinity
[21] 負の無限大 : -Infinity
[22] 正のゼロ : 0.0
[23] 負のゼロ : -0.0
[24] -0.5 : -0.0

サンプルプログラムの説明

それでは簡単にプログラムの解説をしていこう。

このプログラムは,扱うことのできる様々な値を持つ変数の切り上げを求めいている。

  • [1] 10.0を変数:positiveValue100に設定する。
  • [2] 10.4を変数:positiveValue104に設定する。
  • [3] 10.5を変数:positiveValue105に設定する。
  • [4] -10.0を変数:negativeValue100に設定する。
  • [5] -10.5を変数:negativeValue105に設定する。
  • [6] -10.6を変数:negativeValue106に設定する。
  • [7] 正の無限大を変数:positiveInfinityに設定する。
  • [8] 正のゼロを変数:positiveZeroに設定する。
  • [9] 負のゼロを変数:negativeZeroに設定する。
  • [10] 正の無限大を変数:negativeInfinityに設定する。
  • [11] NaNを変数:nanValueに設定する。
  • [12] -0.5を変数:negativeValue005に設定する。
  • [13] positiveValue100の切り上げを表示する。
  • [14] positiveValue104の切り上げを表示する。
  • [15] positiveValue105の切り上げを表示する。
  • [16] negativeValue100の切り上げを表示する。
  • [17] negativeValue105の切り上げを表示する。
  • [18] negativeValue106の切り上げを表示する。
  • [19] positiveInfinityの切り上げを表示する。
  • [20] positiveZeroの切り上げを表示する。
  • [21] negativeZeroの切り上げを表示する。
  • [22] negativeInfinityの切り上げを表示する。
  • [23] nanValueの切り上げを表示する。
  • [24] negativeValue005の切り上げを表示する。

Javaの切捨ての求め方

Javaによる切捨て

切捨てを求めるとは,対象の数値より小さいか等しい整数値の中で,対象の数値との距離が最も小さい整数値を求めることだ。例えば,「10.02」を切捨てると,「10.00」になる。これを,切捨てを求めるという。

Javaで切捨てを求めるためにはfloorメソッドを利用する。

書き方の基本は簡単だ。

切捨て = Math.floor(対象となる数値)

Javaでの切捨てを求めるための書き方の詳細を確認していこう。

floorメソッド

floorメソッドの引数に指定した値から切捨てを求める。引数に指定できる値はdouble型のみだ。

floor(double a)

戻り値の型

public static double

内容

引数より小さいか等しい数学の整数で,最も大きな(正の最大に最も近い)double値を戻す。

■下記は特例となる

  • 引数がすでに数学の整数に等しければ,結果は引数と同じになる。
  • 引数がNaNまたは,無限大または,正のゼロまたは,負のゼロならば,結果は引数と同じになる。

引数:a - 値

戻り値:aより小さいか等しい数学の整数で,最も大きな(正の最大に最も近い)浮動小数点値を戻す。

Javaで切捨てを求めるサンプルプログラム

それでは実際にサンプルプログラムを確認してみよう。

public class FloorDouble {
    public static void main(String[] args) {
        double positiveValue100        = 10.0;//[1]
        double positiveValue104        = 10.4;//[2]
        double positiveValue105        = 10.5;//[3]
        double negativeValue100        = -10.0;//[4]
        double negativeValue105        = -10.5;//[5]
        double negativeValue106        = -10.6;//[6]
        double positiveInfinity        = Double.POSITIVE_INFINITY;//[7]
        double positiveZero            = 0.0;//[8]
        double negativeZero            = - 0.0;//[9]
        double negativeInfinity        = Double.NEGATIVE_INFINITY;//[10]
        double nanValue                = Double.NaN;//[11]

        System.out.println("[12] 10.0 : " + Math.floor(positiveValue100));
        System.out.println("[13] 10.4 : " + Math.floor(positiveValue104));
        System.out.println("[14] 10.5 : " + Math.floor(positiveValue105));
        System.out.println("[15] -10.0 : " + Math.floor(negativeValue100));
        System.out.println("[16] -10.5 : " + Math.floor(negativeValue105));
        System.out.println("[17] -10.6 : " + Math.floor(negativeValue106));
        System.out.println("[18] NaN(数値でない値) : " + Math.floor(nanValue));
        System.out.println("[19] 正の無限大 : " + Math.floor(positiveInfinity));
        System.out.println("[20] 負の無限大 : " + Math.floor(negativeInfinity));
        System.out.println("[21] 正のゼロ : " + Math.floor(positiveZero));
        System.out.println("[22] 負のゼロ : " + Math.floor(negativeZero));
    }
} 

実行結果

[12] 10.0 : 10.0
[13] 10.4 : 10.0
[14] 10.5 : 10.0
[15] -10.0 : -10.0
[16] -10.5 : -11.0
[17] -10.6 : -11.0
[18] NaN(数値でない値) : NaN
[19] 正の無限大 : Infinity
[20] 負の無限大 : -Infinity
[21] 正のゼロ : 0.0
[22] 負のゼロ : -0.0

サンプルプログラムの説明

それでは簡単にプログラムの解説をしていこう。このプログラムは,扱うことのできる様々な値を持つ変数の切捨てを求めいている。

  • [1] 10.0を変数:positiveValue100に設定する。
  • [2] 10.4を変数:positiveValue104に設定する。
  • [3] 10.5を変数:positiveValue105に設定する。
  • [4] -10.0を変数:negativeValue100に設定する。
  • [5] -10.5を変数:negativeValue105に設定する。
  • [6] -10.6を変数:negativeValue106に設定する。
  • [7] 正の無限大を変数:positiveInfinityに設定する。
  • [8] 正のゼロを変数:positiveZeroに設定する。
  • [9] 負のゼロを変数:negativeZeroに設定する。
  • [10] 正の無限大を変数:negativeInfinityに設定する。
  • [11] NaNを変数:nanValueに設定する。
  • [12] positiveValue100の切捨てを表示する。
  • [13] positiveValue105の切捨てを表示する。
  • [14] positiveValue106の切捨てを表示する。
  • [15] negativeValue100の切捨てを表示する。
  • [16] negativeValue104の切捨てを表示する。
  • [17] negativeValue105の切り上げを表示する。
  • [18] positiveInfinityの切り上げを表示する。
  • [19] positiveZeroの切り上げを表示する。
  • [20] negativeZeroの切り上げを表示する。
  • [21] negativeInfinityの切り上げを表示する。
  • [22] nanValueの切り上げを表示する。

Javaの四捨五入の求め方

Javaによる四捨五入

四捨五入を求めるとは,対象の数値との距離が最も小さい整数値を求めることだ。対象の数値が二つの整数値の中間にあるときは,二つの内の大きいほうの整数値になる。例えば,「10.4」を四捨五入すると,「10.0」になる。また,「10.5」を四捨五入すると,「11.0」になる。これを,四捨五入を求めるという。

Javaで四捨五入を求めるためにはroundメソッドを利用する。

書き方の基本は簡単だ。

四捨五入 = Math.round(対象となる数値)

Javaでの四捨五入を求めるための書き方の詳細を確認していこう。

メソッドの型による違い

roundメソッドの引数に指定した値から四捨五入を求める。引数に指定できる値はdouble型・float型と種類がある。

double型

round(double a)

戻り値の型

public static double

内容

正の無限大に向かって四捨五入された引数に最も近いlong値を戻す。

■下記は特例となる

  • 引数がNaNならば,結果はゼロになる。
  • 引数が負の無限大または,Long.MIN_VALUEより小さいか等しいならば,結果はLong.MIN_VALUEと同じになる。
  • 引数が正の無限大または,Long.MAX_VALUEより大きいか等しいならば,結果はLong.MAX_VALUEと同じになる。

引数:a - long値に四捨五入すべき浮動小数点。

戻り値:引数を四捨五入したlong値に最も近い値。

float型

round(float a)

戻り値の型

public static float

内容

正の無限大に向かって四捨五入された引数に最も近いint値を戻す。

 

■下記は特例となる

  • 引数がNaNならば,結果はゼロになる。
  • 引数が負の無限大または,Integer.MIN_VALUEより小さいか等しいならば,結果はInteger.MIN_VALUEと同じになる。
  • 引数が正の無限大または,Integer.MAX_VALUEより大きいか等しいならば,結果はInteger.MAX_VALUEと同じになる。

引数:a - int値に四捨五入すべき浮動小数点。

戻り値:引数を四捨五入したint値に最も近い値。

Javaで四捨五入を求めるサンプルプログラム

それでは実際にサンプルプログラムを確認してみよう。

public class RoundDouble {
    public static void main(String[] args) {
        double positiveValue100        = 10.0;//[1]
        double positiveValue104        = 10.4;//[2]
        double positiveValue105        = 10.5;//[3]
        double negativeValue100        = -10.0;//[4]
        double negativeValue105        = -10.5;//[5]
        double negativeValue106        = -10.6;//[6]
        double positiveInfinity        = Double.POSITIVE_INFINITY;//[7]
        double longMaximumValue        = Long.MAX_VALUE;//[8]
        double longMinimumValue        = Long.MIN_VALUE;//[9]
        double negativeInfinity        = Double.NEGATIVE_INFINITY;//[10]
        double nanValue                = Double.NaN;//[11]

        System.out.println("[12] 10.0 : " + Math.round(positiveValue100));
        System.out.println("[13] 10.4 : " + Math.round(positiveValue104));
        System.out.println("[14] 10.5 : " + Math.round(positiveValue105));
        System.out.println("[15] -10.0 : " + Math.round(negativeValue100));
        System.out.println("[16] -10.5 : " + Math.round(negativeValue105));
        System.out.println("[17] -10.6 : " + Math.round(negativeValue106));
        System.out.println("[18] NaN(数値でない値) : " + Math.round(nanValue));
        System.out.println("[19] 正の無限大 : " + Math.round(positiveInfinity));
        System.out.println("[20] Long.MAX_VALUE : " + Math.round(longMaximumValue));
        System.out.println("[21] Long.MIN_VALUE : " + Math.round(longMinimumValue));
        System.out.println("[22] 負の無限大 : " + Math.round(negativeInfinity));
    }
} 

 

実行結果

[12] 10.0 : 10
[13] 10.4 : 10
[14] 10.5 : 11
[15] -10.0 : -10
[16] -10.5 : -10
[17] -10.6 : -11
[18] NaN(数値でない値) : 0
[19] 正の無限大 : 9223372036854775807
[21] Long.MAX_VALUE : 9223372036854775807
[22] Long.MIN_VALUE : -9223372036854775808
[20] 負の無限大 : -9223372036854775808

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

このプログラムは,扱うことのできる様々な値を持つ変数の四捨五入を求めいている。

  • [1] 10.0を変数:positiveValue100に設定する。
  • [2] 10.4を変数:positiveValue104に設定する。
  • [3] 10.5を変数:positiveValue105に設定する。
  • [4] -10.0を変数:negativeValue100に設定する。
  • [5] -10.5を変数:negativeValue105に設定する。
  • [6] -10.6を変数:negativeValue106に設定する。
  • [7] 正の無限大を変数:positiveInfinityに設定する。
  • [8] 正のゼロを変数:positiveZeroに設定する。
  • [9] 負のゼロを変数:negativeZeroに設定する。
  • [10] 正の無限大を変数:negativeInfinityに設定する。
  • [11] NaNを変数:nanValueに設定する。
  • [12] positiveValue100の四捨五入を表示する。
  • [13] positiveValue104の四捨五入を表示する。
  • [14] positiveValue105の四捨五入を表示する。
  • [15] negativeValue100の四捨五入を表示する。
  • [16] negativeValue105の四捨五入を表示する。
  • [17] negativeValue106の四捨五入を表示する。
  • [18] positiveInfinityの四捨五入を表示する。
  • [19] positiveZeroの四捨五入を表示する。
  • [20] negativeZeroの四捨五入を表示する。
  • [21] negativeInfinityの四捨五入を表示する。
  • [22] nanValueの四捨五入を表示する。

まとめ

切り上げのceilメソッド、切捨てのfloorメソッド、四捨五入のroundメソッドについてご紹介してきた。

一番使うのはroundだろうか。floorもよく使う。いちいち調べるのも手間なので、覚えてしまおう。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメント

  1. とおりすがり より:

    実行結果の[16] -10.5 の部分ですが、数カ所で間違っていませんか?

    1. リカレントテクノロジー より:

      いつもご愛読ありがとうございます。
      ご指摘の点ですが確認ができず、詳細いただけますと幸いです。

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する