Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。

算術演算

Javaプログラムでは、+、-などの算術演算子のほかにより高度な算術演算を行うことができるMathクラスが用意されています。Mathクラスで用意されているメソッドを使用することにより、絶対値の算出、平方根の算出など高度な算術演算を行うことができます。

基本的な算術メソッド

ここでは、Mathクラスで用意されているメソッドの中で、絶対値の算出、引数値にもっとも近い整数の算出など、基本的なメソッドを紹介します。

戻り型 メソッド 説明
static int
static long
static float
static double
abs(int)
abs(long)
abs(float)
abs(double)
引数に指定された値のフォーマット処理を行います。
static double ceil(double) 引数に与えられた値以上で、もっとも小さな整数値をdouble型で返します。
static double floor(double) 引数に与えられた値以下で、もっとも大きな整数値をdouble型で返します。
static double rint(double) 引数に与えられた値で、その値にもっとも近い整数値をdouble型で返します。
static int
static long
round(float)
round(double)
引数に与えられた値で、その値にもっとも近いint型、もしくはlong型を返します。

【例1】それぞれの算術演算メソッドの実行を行います。

public class ExNumber9 {
    public static void main(String[] args) {
        double exValue = -30.145;   //(1)

        //-30.145の絶対値を返します。
        System.out.println(Math.abs(exValue));   //(2)

        //-30.145以上で最も小さな整数値を返します。
        System.out.println(Math.ceil(exValue));   //(3)

        //-30.145以下で最も大きな整数値を返します。
        System.out.println(Math.floor(exValue));   //(4)

        //-30.145に最も近い整数値を返します。
        System.out.println(Math.rint(exValue));   //(5)

        //-30.145に最も近いlong型の整数値を返します。
        System.out.println(Math.round(exValue));   //(6)
    }
}

解説1

  1. (1)double型の変数exValueに値-30.145を代入します。
  2. (2)absメソッドを使用し、-30.145の絶対値を算出します。
  3. (3)ceilメソッドを使用し、-30.145以上で最も小さな整数値を算出します。
  4. (4)floorメソッドを使用し、-30.145以下で最も大きな整数値を算出します。
  5. (5)rintメソッドを使用し、-30.145に最も近い整数値を算出します。
  6. (6)roundメソッドを使用し、-30.145に最も近いlong型の整数値を算出します。

実行結果1

D:\JAVA>javac ExNumber9.java

D:\JAVA>java ExNumber9
30.145
-30.0
-31.0
-30.0
-30

D:\JAVA>

比較算術メソッド

ここでは、Mathクラスで用意されている比較関連メソッドについて説明をします。2つの引数を持ち、両者を比較し、小さな値または大きな値を返すメソッドです。

戻り型 メソッド 説明
static int
static long
static float
static double
max(int, int)
max(long, long)
max(float, float)
max(double, double)
2つの引数のうち、大きな値を返します。
static int
static long
static float
static double
min(int, int)
min(long, long)
min(float, float)
min(double, double)
2つの引数のうち、小さな値を返します。

【例2】変数exValue1とexValue2を比較算術メソッドで比較します。

public class ExNumber10 {
    public static void main(String[] args) {
        double exValue1 = 20.43;   //(1)
        double exValue2 = 50.12;   //(2)

        //20.43と50.12のうち、大きな値を返します。
        System.out.println(Math.max(exValue1, exValue2));   //(3)

        //20.43と50.12のうち、小さな値を返します。
        System.out.println(Math.min(exValue1, exValue2));   //(4)
    }
}

解説2

  1. (1)double型の変数exValue1に値20.43を代入します。
  2. (2)double型の変数exValue2に値50.12を代入します。
  3. (3)maxメソッドを使用し、exValu1とexValue2のうち、大きな値を返します。
  4. (4)minメソッドを使用し、exValu1とexValue2のうち、小さな値を返します。

実行結果2

D:\JAVA>javac ExNumber10.java

D:\JAVA>java ExNumber10
50.12
20.43

D:\JAVA>

指数関数メソッド

ここでは、Mathクラスで用意されている指数関数に関連するメソッドについて説明をします。

戻り型 メソッド 説明
static double exp(double) 自然対数の底eを引数の値で累乗した値を返します。
static double log(double) 引数で指定された値の自然対数値を返します。
static double pow(double, double) 第1引数を第2引数で累乗した値を返します。
static double sqrt(double) 引数で指定された値の平方根を返します。

【例3】指数関数に関するメソッドを使用した例を記載します。

public class ExNumber11 {
    public static void main(String[] args) {
        double exValue1 = 4.0D;
        double exValue2 = 2.0D;

        //自然対数の底eを4で累乗した値を返します。
        System.out.println(Math.exp(exValue1));   //(1)

        //4の自然体数値を返します。
        System.out.println(Math.log(exValue1));   //(2)

        //4を2乗した値を返します。
        System.out.println(Math.pow(exValue1, exValue2));   //(3)

        //4の平方根を返します。
        System.out.println(Math.sqrt(exValue1));   //(4)
    }
}

解説3

  1. (1)変数exValue1で自然対数の底eを累乗した値を返します。
  2. (2)変数exValue1の自然体数値を返します。
  3. (3)変数exValue1を変数exValue2で累乗した値を返します。
  4. (4)変数exValue1の平方根を返します。

実行結果3

D:\JAVA>javac ExNumber11.java

D:\JAVA>java ExNumber11
54.598150033144236
1.3862943611198906
16.0
2.0

D:\JAVA>

三角関数メソッド

ここでは、Mathクラスで用意されている三角関数に関連するメソッドについて説明をします。

戻り型 メソッド 説明
static
double
sin(double) 引数で指定された値の正弦(サイン)を返します。
static
double
cos(double) 引数で指定された値の余弦(コサイン)を返します。
static
double
tan(double) 引数で指定された値の正接(タンジェント)を返します。
static
double
asin(double) 引数で指定された値の逆正弦(アークサイン)を返します。
static
double
acos(double) 引数で指定された値の逆余弦(アークコサイン)を返します。
static
double
atan(double) 引数で指定された値の逆正接(アークタンジェント)を返します。
static
double
toDegrees(double) 引数で指定された値(ラジアン)を相当する度に変換します。
static
double
toRadians(double) 引数で指定された値(度)を相当するラジアンに変換します。

【例4】三角関数に関するメソッドを使用した例を記載します。

public class ExNumber12 {
    public static void main(String[] args) {
        double exDegrees = 75.0;   //(1)
        double exRadians = Math.toRadianss(exDegrees);   //(2)

        //75度のサインの値を返します。
        System.out.println(Math.sin(exRadians));   //(3)

        //75度のコサインの値を返します。
        System.out.println(Math.cos(exRadians));   //(4)

        //75度のタンジェントの値を返します。
        System.out.println(Math.tan(exRadians));   //(5)

        //75度のアークサインの値を返します。
        System.out.println(Math.asin(exRadians));   //(6)

        //75度のアークコサインの値を返します。
        System.out.println(Math.acos(exRadians));   //(7)

        //75度のアークタンジェントの値を返します。
        System.out.println(Math.atan(exRadians));   //(8)
    }
}

解説4

  1. (1)変数exDegreesに75度を表す値を代入します。
  2. (2)toRadiansメソッドを使用し、変数exDegreesをラジアンに変更し、変数exRadiansに代入します。
  3. (3)sinメソッドを使用し、変数exRadiansのサインの値を返します。
  4. (4)cosメソッドを使用し、変数exRadiansのコサインの値を返します。
  5. (5)tanメソッドを使用し、変数exRadiansのタンジェントの値を返します。
  6. (6)asinメソッドを使用し、変数exRadiansのアークサインの値を返します。
  7. (7)acosメソッドを使用し、変数exRadiansのアークコサインの値を返します。
  8. (8)atanメソッドを使用し、変数exRadiansのアークタンジェントの値を返します。

※ 値でNaN(Not a Number)が返された場合は、それはメソッドを実行した結果その値が確定できないことを表します。 Float、Doubleの両クラスにNaNを判別するisNaNメソッドが用意されています。

実行結果4

D:\JAVA>javac ExNumber12.java

D:\JAVA>java ExNumber12
0.9659258262890683
0.25881904510252074
3.7320508075688776
NaN
NaN
0.9184307960450497

D:\JAVA>

ランダムメソッド

ここでは、ある一定範囲の中から無作為に値を算出するramdomメソッドを紹介します。Javaで用意されているrandomメソッドは0.0以上1.0未満の範囲でランダムに値を算出します。注意すべき点は0.0は算出範囲に含まれるが、1.0は算出範囲に含まれないと言うことです。演算子で記載すると 0.0 <= 値 < 1.0 となります。0.0以上1.0未満の間の値以外を求めたい場合は、randomメソッドで算出された値を乗算するなどします。

戻り型 メソッド 説明
static double random( ) 0.0以上1.0未満の値の中からランダムな値を算出します。

【例5】randomメソッドを使用し、1から10までの間でランダムな数値を算出します。

public class ExNumber13 {
    public static void main(String[] args) {
        int randomNumber = (int)(Math.random() * 10 + 1);   //(1)
        System.out.println(randomNumber);   //(2)
    }
}

解説5

  1. (1)randomメソッドを使用し、その値を10倍し、1を加えることで1.0 <= 値 < 10.0の値を算出します。算出後、値をint型にキャストし整数値にします。
  2. (2)printlnメソッドを使用し、算出された値の表示を行います。

実行結果5

D:\JAVA>javac ExNumber13.java

D:\JAVA>java ExNumber13
7

D:\JAVA>

4算術演算