JavaのMathクラスについて解説!Mathを使うと高度な計算が楽になる!
Java Mathクラスとは
Java Mathクラスは、Javaの演算子が提供しているよりも高度な数学計算ができます。
例えば、対数関数、平方根、立方根、2つの値の最大値と最小値や、円の値、三角関数(sin、cos、tanなど)等を計算が簡単にできるメソッドが含まれてます。
Mathクラスはjava.langパッケージに位置しており、クラス名はjava.lang.Mathです。
Mathクラス の機能は多いですが、ひとつづつ解説していきます。
基本的な数学関数
java.lang.Mathは、絶対値や2つの値の最高値と最低値、円の値、ランダム値などを取得するための基本的なメソッドが含まれています。
Math.abs()
Math.abs()関数は、渡されたパラメーターの絶対値を返します。返す値は正の値になります。
パラメータ値が負の場合、負の符号が削除された正の値が返されます。
Math.abs() メソッドの例
1 2 3 |
int abs1 = Math.abs(30); // abs1 = 30 int abs2 = Math.abs(-40); // abs2 =40 |
30の絶対値:30
ー40の絶対値:40
Math.abs()メソッドは4種類でオーバーロードされています。
1 2 3 4 |
Math.abs(int) Math.abs(long) Math.abs(float) Math.abs(double) |
このメソッドのどれが呼び出されるかは、Math.abs() メソッドに渡されるパラメーターの型によって異なります。
Math.ceil()
Math.ceil()関数は、浮動小数点値を最も近い整数値に切り上げます。
Math.ceil()の例
1 |
double ceil = Math.ceil(8.343); // ceil = 9.0 |
出力結果
このJavaコードを実行した後、ceil変数の値は9.0になります。
Math.floor()
Math.floor()関数は、浮動小数点値を最も近い整数値に切り捨てます。
Math.floor()の例
1 |
double floor = Math.floor(8.343); //floor= 8.0 |
出力結果
このJavaコードを実行した後、ceil変数の値は8.0になります。
Math.floorDiv()
Math.floorDiv()メソッドは、整数(intまたはlong)を別の整数で割り、結果を最も近い整数値に切り捨てます。
結果が正の場合、はJava 除算演算子を使用した場合と同じ結果になります。
ですが負の場合、結果は同じではありません。
floorDiv()メソッドは、最も近い負の整数に切り捨てます。
除算演算子(/)との違いを見てみましょう。
Math.floorDiv()の例
1 2 3 4 5 |
double result1 = Math.floorDiv(-100,9); System.out.println( "result1:" + result1); double result2= -100 / 9; System.out.println( "result2:" + result2); |
出力結果
result1:-12.0
result2:-11.0
Math.min()
Math.min()メソッドは、パラメーターとして渡された2つの値の最小値を返します。
Math.min()の例
1 |
int min = Math.min(10、20); |
出力結果
このコードを実行すると、min変数の値は10になります。
Math.max()
Math.max()メソッドは、パラメーターとして渡された2つの値の最大値を返します。
Math.max()の例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
int max = Math.max(10、20); <p class="blog_p"><strong>出力結果</strong></p> <div class="w3-note w3-panel" style="margin-bottom: 100px;"> <p class="blog_p"> このコードを実行すると、max変数の値は20がになります。 </p> </div> <h3 class="blog_h3"> Math.round() </h3> <p class="blog_p"> Math.round()は、引数として与えた数を四捨五入して、もっとも近い整数を返します。 </p> JavaのMath.round()の例 <pre class="lang:default decode:true "> double down = Math.round(23.445); double up = Math.round(23.545); |
この2つのJavaコードを実行した後、down変数の値は 23.0が含まれ、up変数の値は24.0になります。
Math.random()
Math.random()メソッドは、0から1の間のランダムな浮動小数点数を返します。
JavaのMath.random()の例1
1 |
double random = Math.random(); |
0から100などのランダムな値を取得するには、Math.random()で返された値に(100など)を掛ければ実装できます。
JavaのMath.random()の例2
1 |
double random = Math.random()* 100D; |
整数値が必要な場合はround()、floor()またはceil()メソッドを使用します。
指数と数学関数
Java Mathクラスには、指数計算と対数計算を目的とした一連の関数も含まれています。
このセクションでは、よく使う数学関数を紹介します。
Math.exp()
Math.exp()関数は、e(オイラーの数)をパラメーターとして指定された値で累乗して返します。
Math.exp() 例
1 2 3 4 5 |
double exp1 = Math.exp(1); System.out.println( "exp1 =" + exp1); double exp2 = Math.exp(2); System.out.println( "exp2 =" + exp2); |
実行結果
出力結果
exp1 = 2.718281828459045
exp2 = 7.38905609893065
Math.log()
Math.log()メソッドは、指定されたパラメーターの対数を返します。
Math.log()の逆の値を返すのはMath.exp()。
JavaのMath.log()の例
1 2 3 4 5 |
double log1 = Math.log(1); System.out.println( "log1 =" + log1); double log2= Math.log(10); System.out.println( "log2 =" + log2); |
出力結果
出力結果
log1 = 0.0
log2 = 2.302585092994046
Math.log10()
Math.log10メソッドは、引数に指定した値から常用対数を求めます。常用対数とは10を底にした対数なので、logの後に10がついた関数になっています。
Math.log10()の例
1 2 3 4 5 |
double log10_1 = Math.log10(1); System.out.println( "log10_1 =" + log10_1); double log10_2 = Math.log10(100); System.out.println( "log10_2 =" + log10_2); |
出力結果
出力結果
log10_1 = 0.0
log10_2 = 2.0
Math.pow()
Math.pow()は、最初のパラメーターの値を2番目のパラメーターで累乗した値を返します。
Math.pow()の例
1 2 3 4 5 |
double pow1 = Math.pow(2,2); System.out.println( "pow1 =" + pow1); double pow2 = Math.pow(2,8); System.out.println( "pow2 =" + pow2); |
出力結果
出力結果
pow1= 4.0
pow1 = 256.0
例では 「2の2乗」4 と「2の8乗」256を計算しています。
Math.sqrt()
Math.sqrt()メソッドは、指定されたパラメーターの平方根を計算します。
JavaのMath.sqrt()の例
1 2 3 4 5 |
double sqrt1 = Math.sqrt(4); System.out.println( "sqrt1 =" + sqrt1); double sqrt2 = Math.sqrt(9); System.out.println( "sqrt2 =" + sqrt2); |
出力結果
出力結果
sqrt1 = 2.0
sqrt2 = 3.0
三角関数
Java Mathクラスは、サイン、コサイン、タンジェント等、三角法で計算する為の関数があります。
このセクションでは、最も使用される三角関数について説明します。
Math.PI
Math.PIは、円周率を使用する為に必要な定数(3.14…..)です。
Math.sin()
Math.sin()メソッドは、指定された角度の正弦(サイン)を計算します。
JavaのMath.sin() の例
1 2 |
double sin = Math.sin(Math.PI); System.out.println( "sin =" + sin); |
Math.cos()
Math.cos()メソッドは、指定された角度値ラジアン単位のコサイン値を計算します。
JavaのMath.cos()の例
1 2 |
double cos = Math.cos(Math.PI); System.out.println( "cos =" + cos); |
Math.tan()
Math.tan()メソッドは、指定された角度値ラジアン単位のタンジェント値を計算します。
JavaのMath.tan()例
1 2 |
double tan = Math.tan(Math.PI); System.out.println( "tan =" + tan); |
Math.asin()
Math.asin()メソッドは、1〜-1の値の逆正弦値を計算します。
JavaのMath.asin()の例
1 2 |
double asin = Math.asin(1.0); System.out.println( "asin =" + asin); |
Math.acos()
Math.acos()メソッドは、1〜-1の値の逆余弦値を計算します。
JavaのMath.acos()の例
1 2 |
double acos = Math.acos(1.0); System.out.println( "acos =" + acos); |
Math.atan()
Math.atan()メソッドは、1〜-1の値のアークタンジェンス値を計算します。
JavaのMath.atan()の例
1 2 |
double atan = Math.atan(1.0); System.out.println( "atan =" + atan); |
Math.atan2()
Math.atan2()数学的に どのような方法で行うのか正確にはわかりませんが、JavaDocの内容は次のとおりです。
“直交座標(x、y)から極座標(r、theta)への変換から角度thetaを返します。”
Math.sinh()
Math.sinh()メソッドは、1〜-1の値の双曲線正弦値を計算します。
JavaのMath.sinh()の例
1 2 |
double sinh = Math.sinh(1.0); System.out.println( "sinh =" + sinh); |
Math.cosh()
Math.cosh()メソッドは、1〜-1の値の双曲線余弦値を計算します。
JavaのMath.cosh()の例
1 2 |
double cosh = Math.cosh(1.0); System.out.println( "cosh =" + cosh); |
Math.tanh()
Math.tanh()メソッドは、1〜-1の値の双曲線タンジェンス値を計算します。
JavaのMath.tanh()の例
1 2 |
double tanh = Math.tanh(1.0); System.out.println( "tanh =" + tanh); |
Math.toDegrees()
Math.toDegrees()メソッドは、角度をラジアンから角度に変換します。
JavaのMath.toDegrees()の例
1 2 |
二重度= Math.toDegrees(Math.PI); System.out.println( "degrees =" + degree); |
Math.toRadians()
Math.toRadians()メソッドは、度単位の角度をラジアンに変換します。
JavaのMath.toRadians()の例
1 2 |
double radians = Math.toRadians(180); System.out.println( "radians =" + radians); |
Ryotin
現役フリーランスエンジニアです。使ってるエージェントはフライテック!得意言語はJava。月収は75万円。SESのフリーランスではこれ以上稼ぐのは厳しそう...とはいってもサラリーマンの時より倍の収入だから家族も喜んでるけどね!