Java数学クラスの手引き

Java Mathクラスのガイド

1. 前書き

このチュートリアルでは、指数、対数などの数値演算を実行するための便利な静的メソッドを提供するMathクラスについて説明します。

2. 基本的な数学関数

最初に取り上げるメソッドのセットは、絶対値、平方根、2つの値の間の最大値または最小値などの基本的な数学関数です。

2.1. abs()

abs()メソッドは、指定された値の絶対値を返します。

Math.abs(-5); // returns 5

同様に、次に説明する他の例のうち、abs()はパラメータとしてint, long, floatまたはdoubleを受け入れ、相対的なものを返します。

2.2. pow()

最初の引数の値を2番目の累乗で計算して返します。

Math.pow(5,2); // returns 25

この方法については、hereで詳しく説明します。

2.3. sqrt()

doubleの丸められた正の平方根を返します。

Math.sqrt(25); // returns 5

引数がNaNまたはゼロ未満の場合、結果はNaN.になります。

2.4. cbrt()

同様に、cbrt()doubleの立方根を返します。

Math.cbrt(125); // returns 5

2.5. max()

メソッドの名前が示すように、2つの値の間の最大値を返します。

Math.max(5,10); // returns 10

ここでも、メソッドはint, long, floatまたはdoubleを受け入れます。

2.6. min() 

同様に、min()は2つの値の間の最小値を返します。

Math.min(5,10); // returns 5

2.7. random()

0.0以上1.0未満の疑似ランダムdouble を返します。

double random = Math.random()

これを行うには、the method creates a single instance of java.util.Random() number generator when it is called for the first time. 

その後、このメソッドのすべての呼び出しで、同じインスタンスが使用されます。 メソッドは同期されているため、複数のスレッドで使用できることに注意してください。

this articleでランダムを生成する方法の例をさらに見つけることができます。

2.8. signum()

値の符号を知る必要がある場合に役立ちます。

Math.signum(-5) // returns -1

このメソッドは、引数がゼロより大きい場合は1.0を返し、そうでない場合は-1.0を返します。 引数が正のゼロまたは負のゼロの場合、結果は引数と同じです。

入力は、float またはdouble.にすることができます

2.9. copySign()

2つのパラメーターを受け入れ、最初の引数を2番目の引数の符号とともに返します。

Math.copySign(5,-1); // returns -5

引数は、floatまたはdouble.にすることもできます

3. 指数関数と対数関数

基本的な数学関数に加えて、the Math class contains methods to solve exponential and logarithmic functions.

3.1. exp()

exp()メソッドは、double引数を受け取り、引数の累乗のオイラー数を返します(ex):

Math.exp(1); // returns 2.718281828459045

3.2. expm1()

上記の方法と同様に、expm1()は、受け取った引数の累乗で累乗されたオイラーの数を計算しますが、-1(ex -1)を加算します。

Math.expm1(1); // returns 1.718281828459045

3.3. log()

double値の自然対数を返します。

Math.log(Math.E); // returns 1

3.4. log10()

引数の底10の対数を返します。

Math.log10(10); // returns 1

3.5. log1p()

同様に、log(), butは、引数ln(1 + x)に1を追加します。

Math.log1p(Math.E); // returns 1.3132616875182228

4. 三角関数

幾何学的な公式を扱う必要がある場合、常に三角関数が必要です。 Mathクラスはこれらを提供します。

4.1. sin()

角度(ラジアン)を表す単一のdouble引数を受け取り、三角関数の正弦を返します。

Math.sin(Math.PI/2); // returns 1

4.2. cos()

同様に、cos()は、角度の三角余弦(ラジアン)を返します。

Math.cos(0); // returns 1

4.3. tan()

角度の三角関数タンジェントを返します(ラジアン単位):

Math.tan(Math.PI/4); // returns 1

4.4. sinh(), cosh(), tanh()

それらはそれぞれ、double値の双曲線正弦、双曲線余弦、および双曲線正接を返します。

Math.sinh(Math.PI);

Math.cosh(Math.PI);

Math.tanh(Math.PI);

4.5. asin()

受信した引数の逆正弦を返します。

Math.asin(1); // returns pi/2

結果は、–pi / 2からpi / 2の範囲の角度になります。

4.6. acos()

受信した引数の逆余弦を返します。

Math.acos(0); // returns pi/2

結果は、0〜piの範囲の角度になります。

4.7. atan()

受信した引数の逆正接を返します。

Math.atan(1); // returns pi/4

結果は、–pi / 2からpi / 2の範囲の角度になります。

4.8. atan2()

最後に、atan2()は、縦座標yと横座標x,を受け取り、直交座標(x,y)から極座標(r, ϑ)

Math.atan2(1,1); // returns pi/4

4.9. toDegrees()

このメソッドは、ラジアンを度に変換する必要がある場合に便利です。

Math.toDegrees(Math.PI); // returns 180

4.10. toRadians()

一方、toRadians()は、逆の変換を行うのに役立ちます。

Math.toRadians(180); // returns pi

このセクションで見たほとんどのメソッドはラジアン単位の引数を受け入れます。したがって、度単位の角度がある場合、三角法を使用する前にこのメソッドを使用する必要があります。

その他の例については、here.をご覧ください。

5. 丸めおよびその他の関数

最後に、丸め方法を見てみましょう。

5.1. ceil()

ceil()は、整数を引数以上の最小のdouble値に丸める必要がある場合に役立ちます。

Math.ceil(Math.PI); // returns 4

thisarticleでは、このメソッドを使用して、数値を100の位に切り上げます。

5.2. floor()

引数以下の最大のdoubleに数値を丸めるには、floor()を使用する必要があります。

Math.floor(Math.PI); // returns 3

5.3. getExponent()

引数の不偏指数を返します。

引数は、doubleまたはfloatにすることができます。

Math.getExponent(333.3); // returns 8

Math.getExponent(222.2f); // returns 7

5.4. IEEEreminder()

最初の(被除数)引数と2番目の(除数)引数の間の除算を計算し、IEEE 754 standardで指定された余りを返します。

Math.IEEEremainder(5,2); // returns 1

5.5. nextAfter()

この方法は、doubleまたはfloatの値の近傍を知る必要がある場合に役立ちます。

Math.nextAfter(1.95f,1); // returns 1.9499999

Math.nextAfter(1.95f,2); // returns 1.9500002

2つの引数を受け入れます。最初の引数は隣接する数値を知りたい値で、2番目の引数は方向です。

5.6. nextUp()

前のメソッドと同様ですが、これは正の無限大の方向にのみ隣接する値を返します。

Math.nextUp(1.95f); // returns 1.9500002

5.7. rint()

引数の最も近い整数値であるdouble を返します。

Math.rint(1.95f); // returns 2.0

5.8. round()

上記の方法と同じですが、引数がfloat の場合はint値を返し、引数がdouble:の場合はlong値を返します。

int result = Math.round(1.95f); // returns 2

long result2 = Math.round(1.95) // returns 2

5.9. scalb()

Scalbは「スケールバイナリ」の略語です。 この関数は、1つのシフト、1つの変換、および二重乗算を実行します。

Math.scalb(3, 4); // returns 3*2^4

5.10. ulp()

ulp() メソッドは、数値から最近傍までの距離を返します。

Math.ulp(1); // returns 1.1920929E-7
Math.ulp(2); // returns 2.3841858E-7
Math.ulp(4); // returns 4.7683716E-7
Math.ulp(8); // returns 9.536743E-7

5.11. hypot()

引数の平方和の平方根を返します。

Math.hypot(4, 3); // returns 5

このメソッドは、中間オーバーフローまたはアンダーフローなしで平方根を計算します。

this articleでは、この方法を使用して2点間の距離を計算します。

6. Java8数学関数

Math classは、Java 8で再検討され、最も一般的な算術演算を実行するための新しいメソッドが含まれています。

これらのメソッドについて説明しましたin another article.

7. 定数フィールド

メソッドに加えて、Math classは2つの定数フィールドを宣言します。

public static final double E

public static final double PI

これは、それぞれ、自然対数の底に近い値と、piに近い値を示します。

8. 結論

この記事では、Javaが数学演算に提供するAPIについて説明しました。

いつものように、ここに表示されているすべてのコードスニペットは利用可能ですover on GitHub.