#JavaのMathクラス
プログラミングでコードを読んでいるとMathクラスがたびたび出てくるので備忘録として。。。
結構抜粋して書いてあります。網羅している訳ではありません。
#フィールド(変数)
##E
自然対数の底(ネイピア数、オイラー数)e
に最も近いdouble値、2.718281828459045
です。
##PI
円周率π
に最も近いdouble値、3.141592653589793
です。
#メソッド(関数)
##abs
引数 | 戻り値 |
---|---|
double | double |
float | float |
int | int |
long | long |
絶対値を求めるメソッド。 | |
Math.abs(-5) は5 です。 |
##max
1番目の引数 | 2番目の引数 | 戻り値 |
---|---|---|
double | double | double |
float | float | float |
int | int | int |
long | long | long |
引数に設定した2つの数字の大きいほうを返します。 | ||
Math.max(2, 7) は7 です。 |
##min
1番目の引数 | 2番目の引数 | 戻り値 |
---|---|---|
double | double | double |
float | float | float |
int | int | int |
long | long | long |
maxの逆で、引数に設定した2つの数字の小さいほうを返します。 | ||
Math.max(10, 4) は4 です。 |
##pow
1番目の引数 | 2番目の引数 | 戻り値 |
---|---|---|
double | double | double |
累乗を求めます。 | ||
Math.pow(a, b) はa^b を返します。 |
||
つまり、Math.pow(3.0, 4.0) は81.0 です。 |
##sqrt
引数 | 戻り値 |
---|---|
double | double |
丸められた正の平方根を求めます。 | |
要するにルートっちゅうやつです。 | |
引数をa とすると、x^2 = a となるような数x を求めます。 |
|
Math.sqrt(9.0) は3.0 です。 |
|
3^2 = 9 ですね! |
##cbrt
引数 | 戻り値 |
---|---|
double | double |
立方根を求めるものです。 | |
引数をa とすると、x^3 = a となるような数x を求めます。 |
|
Math.cbrt(8.0) は2.0 です。 |
|
2^3 = 8 ですね! |
##ceil
引数 | 戻り値 |
---|---|
double | double |
引数を切り上げます。 | |
厳密にいうと、「引数以上の数で計算上の整数と等しい、負の無限大に最も近い数」を返します。 | |
Math.ceil(1.34) は2.0 です。 |
|
Math.ceil(-3.89) は-3.0 です。 |
##floor
引数 | 戻り値 |
---|---|
double | double |
引数を切り捨てます。 | |
厳密にいうと、「引数以下の数で計算上の整数と等しい、正の無限大に最も近い数」を返します。 | |
Math.floor(1.34) は1.0 です。 |
|
Math.floor(-3.89) は-4.0 です。 |
##round
引数 | 戻り値 |
---|---|
double | long |
float | int |
引数を四捨五入した数を返します。 | |
実際、内部では何かビット演算をやってますが、四捨五入です! | |
Math.round(1.34) は1 です。 |
|
Math.round(-3.89) は-4 です。 |
##rint
引数 | 戻り値 |
---|---|
double | double |
引数を四捨五入した数を返します。 | |
round との違いは引数と戻り値の型のみです。 |
##toRadians
引数 | 戻り値 |
---|---|
double | double |
度数法(単位:° , 度 )で表された引数を弧度法(単位:ラジアン )に変換します。 |
|
※一般的に、度数法と弧度法の変換は正確ではありません。 | |
ちなみに、以下の式でも変換できます。 |
ラジアン = 度 * π / 180
##toDegrees
引数 | 戻り値 |
---|---|
double | double |
toRadians の逆で、弧度法で表された引数を度数法に変換します。 |
|
※こちらもtoRadians と同じく正確ではありません。 |
|
ちなみに、以下の式でも変換できます。 |
度 = ラジアン * 180 / π
##sin
引数 | 戻り値 |
---|---|
double | double |
指定された角度の正弦(サイン)を返します。 | |
引数は弧度法で表す必要があります。 | |
つまり、sin30° はMath.sin(Math.toRadians(30.0)) で表されます。 |
|
しかし、少なくとも私の環境ではMath.sin(Math.toRadians(30.0)) を実行すると0.49999999999999994 が返ってきたので、適切な丸め処理が必要だと考えます。 |
##cos
引数 | 戻り値 |
---|---|
double | double |
指定された角度の余弦(コサイン)を返します。 | |
引数は弧度法で表す必要があります。 | |
つまり、cos60° はMath.cos(Math.toRadians(60.0)) で表されます。 |
|
こちらも0.5000000000000001 が返ってきました。丸めましょう。 |
##tan
引数 | 戻り値 |
---|---|
double | double |
指定された角度の正接(タンジェント)を返します。 | |
引数は弧度法で表す必要があります。 | |
つまり、tan45° はMath.tan(Math.toRadians(45.0)) で表されます。 |
|
こちらも0.9999999999999999 が返ってきました。 |
##asin
引数 | 戻り値 |
---|---|
double | double |
指定された値の逆正弦(アーク・サイン)を返します。 | |
返される角度の範囲は、-π/2 ≦ x ≦ π/2 です。 |
|
例えば引数をa とすると、sinx = a となるような、弧度法で表された角の大きさx を求めます。 |
|
Math.asin(0.5) は0.5235987755982989 (≒π/6 )です。 |
##acos
引数 | 戻り値 |
---|---|
double | double |
指定された値の逆余弦(アーク・コサイン)を返します。 | |
返される角度の範囲は、0.0 ≦ x ≦ π です。 |
|
例えば引数をa とすると、cosx = a となるような、弧度法で表された角の大きさx を求めます。 |
|
Math.acos(0.5) は1.0471975511965979 (≒π/3 )です。 |
##atan
引数 | 戻り値 |
---|---|
double | double |
指定された値の逆正接(アーク・タンジェント)を返します。 | |
返される角度の範囲は、-π/2 ≦ x ≦ π/2 です。 |
|
例えば引数をa とすると、tanx = a となるような、弧度法で表された角の大きさx を求めます。 |
|
Math.atan(1.0) は0.7853981633974483 (≒π/4 )です。 |
##atan2
1番目の引数 | 2番目の引数 | 戻り値 |
---|---|---|
double | double | double |
直交座標から極座標へ変換したときの角を返します。 | ||
1番目の引数はy 座標、2番目の引数はx 座標です。(順番注意) |
||
つまり、「直交座標において、『原点と点(x, y)を結ぶ線分』と『x軸の正の部分』がなす角」を弧度法で返します。 | ||
Math.atan2(Math.sqrt(3.0), 1.0) は1.0471975511965976 (≒π/3 )です。 |
##random
引数 | 戻り値 |
---|---|
--- | double |
0.0以上で1.0より小さい、ランダムな正の値を返します。 | |
java.util.Random() と全く同じです。 |
##addExtract
1番目の引数 | 2番目の引数 | 戻り値 |
---|---|---|
int | int | int |
long | long | long |
引数の合計を返します。 | ||
結果がintまたはlongをオーバーフローする場合は例外をスローします。 | ||
Math.addExact(1, 5) は6 です。 |
##subtractExtract
1番目の引数 | 2番目の引数 | 戻り値 |
---|---|---|
int | int | int |
long | long | long |
引数の差分を返します。 | ||
結果がintまたはlongをオーバーフローした場合は例外をスローします。 | ||
Math.subtractExact(1, 5) は-4 です。 |
##multiplyExact
1番目の引数 | 2番目の引数 | 戻り値 |
---|---|---|
int | int | int |
long | long | long |
引数の積を返します。 | ||
結果がintまたはlongをオーバーフローした場合は例外をスローします。 | ||
Math.multiplyExact(2, 5) は10 です。 |
##incrementExact
引数 | 戻り値 |
---|---|
int | int |
long | long |
引数を1だけ増分して返します。 | |
結果がintまたはlongをオーバーフローした場合は例外をスローします。 | |
引数をa とするとa++ とほぼ同じ処理です。 |
##decrementExact
引数 | 戻り値 |
---|---|
int | int |
long | long |
引数を1だけ減分して返します。 | |
結果がintまたはlongをオーバーフローした場合は例外をスローします。 | |
引数をa とするとa-- とほぼ同じ処理です。 |
##negateExact
引数 | 戻り値 |
---|---|
int | int |
long | long |
引数の否定を返します。結果がintまたはlongをオーバーフローした場合は例外をスローします。 | |
引数をa とすると-a が返ってくる処理とほぼ同じですが、引数にInteger.MIN_VALUE を入れると例外が発生します。(int型は-2147483648 〜2147483647 のため) |
##toIntExact
引数 | 戻り値 |
---|---|
long | int |
long型の引数をintで返します。 | |
その値がintに収まらない場合は例外をスローします。 |
##floorDiv
1番目の引数 | 2番目の引数 | 戻り値 |
---|---|---|
int | int | int |
long | long | long |
商代数以下の最大(正の無限大にもっとも近い) 値を返します。 | ||
Math.floorDiv(a, b) は「a をb で割った商のfloor 」を返します。 |
||
例えば、-5 ÷ 3 は-1.6666... なので、Math.floorDiv(-5, 3) は-2 となります。 |
##floorMod
1番目の引数 | 2番目の引数 | 戻り値 |
---|---|---|
int | int | int |
long | long | long |
引数のフロア・モジュラスを返します。 | ||
Math.floorMod(a, b) は「a をb で割り、その商をfloorDiv(a, b) としたときのあまり」を返します。 |
||
例えば、Math.floorDiv(-5, 3) は-2 なので、Math.floorMod(-5, 3) は1 となります。 |
||
つまり、以下の式が成り立ちます。 |
b = Math.floorDiv(a, b) * b + Math.floorMod(a, b)
##exp
引数 | 戻り値 |
---|---|
double | double |
ネイピア数(オイラー数)e をdouble値で累乗した値を返します。 |
|
引数をa とすると、e^a が返されます。 |
##signum
引数 | 戻り値 |
---|---|
double | double |
float | float |
引数をaとすると、 | |
a<0 のとき、-1.0 を、 |
|
a=0 のとき、0.0 を、 |
|
a>0 のとき、1.0 を返します。 |
##hypot
1番目の引数 | 2番目の引数 | 戻り値 |
---|---|---|
double | double | double |
sqrt(x^2 +y^2) を返します。 |
||
途中でオーバーフローやアンダーフローは発生しません。 | ||
つまり、Math.hypot(x, y) は「座標平面上で原点から点(x, y)までの距離」を返します。 |
##log
引数 | 戻り値 |
---|---|
double | double |
引数の自然対数値(底はe)を返します。 | |
つまり、引数をa とすると、e^x = a となる値x を返します。 |
##log10
引数 | 戻り値 |
---|---|
double | double |
引数の常用対数値を返します。 | |
つまり、引数をa とすると、10^x = a となる値x を返します。 |
|
Math.log10(1000.0) は3.0 です。 |
#まとめ
イミワカラン