バナー画像

Java には、指数関数や、絶対値、切り上げ、切り捨てなど、数値処理に関する基本的な操作がまとめられた Math クラスがあります。この記事では、Math クラスで用意されている数値処理のメソッドについて解説します。

絶対値の取得(abc メソッド)

Math.abc メソッドは、数値の絶対値を取得する関数です。

引数で指定した正の数または負の数から絶対値を返します。

Math.abs(int a)

引数:
  a - 絶対値を取得する値
戻り値:
  引数 a の絶対値

Math.abc メソッドの使用例は次のとおりです。

public class Main{
    public static void main(String[] args){
        System.out.println( Math.abs(1000) );    // 1000
        System.out.println( Math.abs(-1000) );   // 1000
    }
}
ポテパンダの一言メモ

Math クラスに用意されている数値処理のメソッドは、すべてクラスメソッド(静的メソッド)の static となるため、メソッドを使用するためにインスタンスの生成を行う必要なありません。

べき乗を求める(pow メソッド)

Math.pow メソッドは、「an 乗」のように、累乗を求めるときに使用するメソッドです。

引数の1つ目には、累乗する数値、2つ目の引数には指数を指定します。

Math.abs(double a, double b)

引数:
  a - 数値
  b - 指数
戻り値:
  引数 aをb乗した値

以下サンプルコードは、10の3乗(103)を求めるサンプルコードです。

public class Main{
    public static void main(String[] args){
        System.out.println( Math.pow(10, 3) );   //1000
    }
}

上のコードは、10 * 10 * 10 のようにして書くこともできますが、基本的には Math クラスのメソッドを使ったほうがよいでしょう。

小さい方、大きい方の値を取得(min, max メソッド)

Math.min メソッドは、引数で指定した2つの数値のうち、小さい方の値を返すメソッドです。

intlongdoublefloat のデータ型が渡せるように、同じ名前で4つメソッドが定義されています。

Math.min(int a, int b)
Math.min(long a, long b)
Math.min(double a, double b)
Math.min(float a, float b)

引数:
  a - 比較する数値の1つ目
  b - 引数する数値の2つ目
戻り値:
  引数 a, bの内、小さい方の値

一方で、Math.max メソッドは、 min メソッドの逆で、引数で指定した2つの数値のうち、値が大きい方を返します。

Math.minMath.max を使った例は次のとおりです。

public class Main{
    public static void main(String[] args){
    // minメソッド
        System.out.println( "min=" + Math.min(3, 1) );    // min=1
    // maxメソッド
        System.out.println( "max=" + Math.max(3, 1) );    // max=3
    }
}

引数に3つ以上渡すには?

Math.min および Math.max は、引数を2つまでしか指定できないため、3つ以上の値から最小値や最大値を取得する場合は、別の方法を考える必要があります。

1つ目に考えられるのが、minmax メソッドを複数回、呼び出す方法です。いったん 2の値を最小値・最大値を求め、その結果と別の数値で再度比較します。

public class Main{
    public static void main(String[] args){
        System.out.println( "min=" + Math.min(3, Math.min(1, 4)) );   // min=1
        System.out.println( "max=" + Math.max(3, Math.max(1, 4)) );   // max=4
    }
}

しかし、比較する値が 4つ、5つと増えていった時に、非常にコードが複雑になり、例えば次のような5つの値の最大値を求めるコードになると、ほとんどの人が一見しただけで読み解くのが難しくなるでしょう。

// 比較する値が5つの時の max メソッド
Math.max(2, Math.max(Math.max(3, 5), Math.max(1, 4)));

このことから、基本的には比較する値が 3つ以上になる場合は、Math.minMath.max は使用せず、Java8 導入された Stream API の maxmin メソッドを使用する方がよいでしょう。

以下は、4つの数値が入ったリストから、Stream API を使って最小値と最大値を取得するサンプルコードです。

public class Main{
    public static void main(String[] args){
        List<Integer> values = Arrays.asList(2, 5, 10, 4);

        //最大値(max)
        Optional<Integer> max = values.stream().max(Comparator.naturalOrder());
        System.out.println("最大値=" + max.get());

        //最小値(min)
        Optional<Integer> min = values.stream().min(Comparator.naturalOrder());
        System.out.println("最小値=" + min.get());
    }
}

切り上げ・切り捨て・四捨五入

Math クラスにある、ceilfloorround メソッドを使用して、それぞれ切り上げ、切り捨て、四捨五入ができます。

切り上げ(ceil メソッド)

数値を切り上げる場合は、Math.ceil メソッドを使用します。このメソッドは、引数で指定した数値に対し、その数値以上で最小の整数を戻り値として返します。

Math.ceil(double a)

引数:
  a - 数値
戻り値:
  a以上で最小の整数(つまり切り上げた値)

切り捨て(floor メソッド)

数値を切り捨てる場合は、Math.floor メソッドを使用します。このメソッドは、引数で指定した数値以下で最大の整数を返します。

Math.floor(double a)

引数:
  a - 数値
戻り値:
  a以下で最大の整数(つまり切り上げた値)

四捨五入(round メソッド)

四捨五入をするには、Math.round メソッドを使用します。このメソッドは、引数の値に 0.5 を加算し、値を切り捨てた値を返します。

Math.round(double a)
Math.round(float a)

引数:
  a - 数値
戻り値:
  aを四捨五入した値
ポテパンダの一言メモ

負の値でround メソッドを使用する時には注意が必要です。例えば負の値の -2.5 を指定すると、結果が -2 になります。これは round メソッドが内部的には floor(a + 0.5) と同じ動きをするためです。

まとめ

Java でよく使う絶対値の取得、べき乗、切り上げ、切り捨て、四捨五入などの数値処理を行う Math クラスの使い方について解説してきました。

他にも Math クラスには数値計算を行うメソッドがあるため、是非覚えておきましょう。

【関連記事】
Javaで値を2乗(べき乗)する方法をサンプル付きで解説!

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。