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 |
度数法(単位:°, 度)で表された引数を弧度法(単位:ラジアン)に変換します。 |
|
| ※一般的に、度数法と弧度法の変換は正確ではありません。 |
|
| ちなみに、以下の式でも変換できます。 |
|
toDegrees
| 引数 |
戻り値 |
| double |
double |
toRadiansの逆で、弧度法で表された引数を度数法に変換します。 |
|
※こちらもtoRadiansと同じく正確ではありません。 |
|
| ちなみに、以下の式でも変換できます。 |
|
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です。 |
|
まとめ
イミワカラン