 |
 |
●数データ−4.算術演算 |
|
| 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). |
double型の変数exValueに値-30.145を代入します。 |
| (2). |
absメソッドを使用し、-30.145の絶対値を算出します。 |
| (3). |
ceilメソッドを使用し、-30.145以上で最も小さな整数値を算出します。 |
| (4). |
floorメソッドを使用し、-30.145以下で最も大きな整数値を算出します。 |
| (5). |
rintメソッドを使用し、-30.145に最も近い整数値を算出します。 |
| (6). |
roundメソッドを使用し、-30.145に最も近いlong型の整数値を算出します。 |
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). |
double型の変数exValue1に値20.43を代入します。 |
| (2). |
double型の変数exValue2に値50.12を代入します。 |
| (3). |
maxメソッドを使用し、exValu1とexValue2のうち、大きな値を返します。 |
| (4). |
minメソッドを使用し、exValu1とexValue2のうち、小さな値を返します。 |
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). |
変数exValue1で自然対数の底eを累乗した値を返します。 |
| (2). |
変数exValue1の自然体数値を返します。 |
| (3). |
変数exValue1を変数exValue2で累乗した値を返します。 |
| (4). |
変数exValue1の平方根を返します。 |
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). |
変数exDegreesに75度を表す値を代入します。 |
| (2). |
toRadiansメソッドを使用し、変数exDegreesをラジアンに変更し、変数exRadiansに代入します。 |
| (3). |
sinメソッドを使用し、変数exRadiansのサインの値を返します。 |
| (4). |
cosメソッドを使用し、変数exRadiansのコサインの値を返します。 |
| (5). |
tanメソッドを使用し、変数exRadiansのタンジェントの値を返します。 |
| (6). |
asinメソッドを使用し、変数exRadiansのアークサインの値を返します。 |
| (7). |
acosメソッドを使用し、変数exRadiansのアークコサインの値を返します。 |
| (8). |
atanメソッドを使用し、変数exRadiansのアークタンジェントの値を返します。 |
| ※ |
値でNaN(Not a Number)が返された場合は、それはメソッドを実行した結果その値が確定できないことを表します。
Float、Doubleの両クラスにNaNを判別するisNaNメソッドが用意されています。 |
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). |
randomメソッドを使用し、その値を10倍し、1を加えることで1.0
<= 値 < 10.0の値を算出します。算出後、値をint型にキャストし整数値にします。 |
| (2). |
printlnメソッドを使用し、算出された値の表示を行います。 |
D:\JAVA>javac
ExNumber13.java
D:\JAVA>java ExNumber13
7
D:\JAVA> |
|
数データ |
|
|
|
|
| 4.算術演算 |
|
|
 |
|
 |
 |