切り上げ/切捨て/四捨五入を求める(ceil, floor, round)

広告

値を切り上げたり四捨五入したりした結果の値を求める方法です。「ceil」メソッドは切り上げ、「floor」メソッドは切捨て、「round」メソッドは四捨五入した結果を返します。「round」メソッドには引数にdouble型の値を取るものとfloat型の値を取るものの2つが用意されています。

ceil:

引数の値以上で、計算上の整数と等しい、最小の (負の無限大にもっとも近い) double 値を返しま
す。

パラメータ:
  a - 値 
戻り値:
  引数の値以上で、計算上の整数と等しい、最小の (負の無限大にもっとも近い)浮動小数点値

floor:

引数の値以下で、計算上の整数と等しい、最大の (正の無限大にもっとも近い) double 値を返しま
す。

パラメータ:
  a - 値 
戻り値:
  引数の値以下で、計算上の整数と等しい、最大の (正の無限大にもっとも近い) 浮動小数点値

round(double):

引数にもっとも近い long を返します。結果は 1/2 を加えて floor メソッドで取り int にキャス
トして整数に丸められます。すなわち、結果は次の式の値になります。

  (long)Math.floor(a + 0.5d)

パラメータ:
  a - long に丸める浮動小数点値 
戻り値:
  引数をもっとも近い long 値に丸めた値

round(float):

引数にもっとも近い int を返します。結果は 1/2 を加えて floor メソッドで取り int にキャスト
して整数に丸められます。すなわち、結果は次の式の値になります。

  (int)Math.floor(a + 0.5f)

パラメータ:
  a - 整数に丸める浮動小数点値
戻り値:
  引数をもっとも近い int 値に丸めた値

※「round」メソッドでは、引数の型と戻り値の型が異なりますので注意して下さい。

それぞれのメソッドを使った結果は下記のような感じとなります。

値      切り上げ   切り捨て   四捨五入
---------------------------------------
 1.34     2.0        1.0        1
 3.67     4.0        3.0        4
-0.23    -0.0       -1.0        0
-3.89    -3.0       -4.0       -4

マイナスの時の値に注意して下さい。

サンプルプログラム

では実際に試してみましょう。

testMath7.java

class testMath7{
  public static void main(String args[]){
    double a = 1.34d;
    double b = 3.67d;
    double c = -0.23d;
    double d = -3.89d;

    System.out.println("「" + a + "」に対して");
    System.out.println("切り上げ「" + Math.ceil(a) + "」");
    System.out.println("切り捨て「" + Math.floor(a) + "」");
    System.out.println("四捨五入「" + Math.round(a) + "」");

    System.out.println("「" + b + "」に対して");
    System.out.println("切り上げ「" + Math.ceil(b) + "」");
    System.out.println("切り捨て「" + Math.floor(b) + "」");
    System.out.println("四捨五入「" + Math.round(b) + "」");

    System.out.println("「" + c + "」に対して");
    System.out.println("切り上げ「" + Math.ceil(c) + "」");
    System.out.println("切り捨て「" + Math.floor(c) + "」");
    System.out.println("四捨五入「" + Math.round(c) + "」");

    System.out.println("「" + d + "」に対して");
    System.out.println("切り上げ「" + Math.ceil(d) + "」");
    System.out.println("切り捨て「" + Math.floor(d) + "」");
    System.out.println("四捨五入「" + Math.round(d) + "」");
  }
}

上記を実際にコンパイルして実行してみると下記のようになります。

p10

( Written by Tatsuo Ikura )