LoginSignup
19
25

More than 3 years have passed since last update.

JavaのMathクラスのまとめ

Last updated at Posted at 2017-02-07

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型は-21474836482147483647のため)

toIntExact

引数 戻り値
long int

long型の引数をintで返します。
その値がintに収まらない場合は例外をスローします。

floorDiv

1番目の引数 2番目の引数 戻り値
int int int
long long long

商代数以下の最大(正の無限大にもっとも近い) 値を返します。
Math.floorDiv(a, b)は「abで割った商のfloor」を返します。
例えば、-5 ÷ 3-1.6666...なので、Math.floorDiv(-5, 3)-2となります。

floorMod

1番目の引数 2番目の引数 戻り値
int int int
long long long

引数のフロア・モジュラスを返します。
Math.floorMod(a, b)は「abで割り、その商を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です。

まとめ

 イミワカラン

19
25
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
25