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

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

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()

これをする、 このメソッドは、初めて呼び出されたときにjava.util.Random()番号ジェネレーターの単一のインスタンスを作成します。 

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

ランダムを生成する方法のその他の例は、この記事にあります。

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. 指数関数と対数関数

基本的な数学関数に加えて、 Mathクラスには、指数関数と対数関数を解くためのメソッドが含まれています。

3.1. exp()

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

Math.exp(1); // returns 2.718281828459045

3.2.  expm1()

上記の方法と同様に、 expm1()は、受け取った引数の累乗のオイラー数を計算しますが、-1( e x -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()、ですが、引数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

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

その他の例については、こちらをご覧ください。

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

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

5.1.  ceil()

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

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

this の記事では、この方法を使用して、数値を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.  IEEEremainder()

最初の(被除数)引数と2番目の(除数)引数の間の除算を計算し、IEEE754標準で規定されている余りを返します。

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は、「scalebinary」の略語です。 この関数は、1つのシフト、1つの変換、および2つの乗算を実行します。

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

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

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

6. Java8数学関数

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

これらの方法については、別の記事でについて説明しました。

7. 定数フィールド

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

public static final double E

public static final double PI

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

8. 結論

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

いつものように、ここに示されているすべてのコードスニペットはGitHubで入手できます。