Math

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Math は、数学的な定数と関数を提供するプロパティとメソッドを持つ、組み込みのオブジェクトです。関数オブジェクトではありません。

MathNumber 型で動作します。 BigInt 型では動作しません。

解説

他のグローバルオブジェクトと異なり、Math はコンストラクタではありません。Math オブジェクトのすべてのプロパティとメソッドは、静的です。円周率を表す定数 π は、Math.PI として参照でき、正弦関数は、 Math.sin(x) として呼び出すことができます (ここでの x は、メソッドの引数です)。定数は、 JavaScript における実数での完全な精度で定義されています。

メモ: 多くの Math 関数の精度は実装に依存します

これは、ブラウザーごとに結果が異なる場合があることを意味し、同じ JavaScript エンジン上であっても、 OS やアーキテクチャが異なれば結果が異なる場合があります。

静的プロパティ

Math.E

ネイピア数 (オイラー数)。これは自然対数の底として用いられる数学定数で、約 2.718 です。

Math.LN2

2 の自然対数。約 0.693 です。

Math.LN10

10 の自然対数。約 2.303 です。

Math.LOG2E

2 を底とした E の対数。約 1.443 です。

Math.LOG10E

10 を底とした E の対数。約 0.434 です。

Math.PI

円周率。約 3.14159 です。

Math.SQRT1_2

½ の平方根 (または 1/√2 とひとしいすう)。約 0.707 です。

Math.SQRT2

2 の平方根。約 1.414 です。

静的メソッド

Math.abs(x)

x の絶対値を返す。

Math.acos(x)

x のアークコサイン (逆余弦) を返す。

Math.acosh(x)

x のハイパーボリックアークコサイン (双曲線逆余弦) を返す。

Math.asin(x)

x のアークサイン (逆正弦) を返す。

Math.asinh(x)

x のハイパーボリックアークサイン (双曲線逆正弦) を返す。

Math.atan(x)

x のアークタンジェント (逆正接) を返す。

Math.atanh(x)

x のハイパーボリックアークタンジェント (双曲線逆正接) を返す。

Math.atan2(y, x)

引数で指定されたの比率のアークタンジェント (逆正接) を返す。

Math.cbrt(x)

x の立方根を返す。

Math.ceil(x)

x 以上の最小の整数を返す。

Math.clz32(x)

x を 2 進数 32 ビット整数値で表した数の先頭の 0 の個数を返す。

Math.cos(x)

x のコサイン (余弦) を返す。

Math.cosh(x)

x のハイパーボリックコサイン (双曲線余弦) を返す。

Math.exp(x)

Ex を返します。ここで x は引数であり、 E はオイラー定数 (2.718…, 自然対数の低) です。

Math.expm1(x)

exp(x) から 1 を引いた値を返す。

Math.floor(x)

x 以下の最大の整数を返す。

Math.fround(x)

x に近似の 単精度 浮動小数点数を返す。

Math.hypot([x[, y[, …]]])

引数の二乗和の平方根を返す。

Math.imul(x, y)

xy の 32 ビット乗算の結果を返す。

Math.log(x)

x の自然対数 (㏒e) を返す。

Math.log1p(x)

x1 + x の自然対数 (㏒e) を返す。

Math.log10(x)

x の 10 を底とした対数 (log10) を返す。

Math.log2(x)

x の 2 を底とした対数 (log2) を返す。

Math.max([x[, y[, …]]])

引数として与えた複数の値の中で最大の値を返す。

Math.min([x[, y[, …]]])

引数として与えた複数の値の中で最小の値を返す。

Math.pow(x, y)

xy で累乗した値、すなわち xy を返す。

Math.random()

0 以上 1 未満の疑似乱数を返す。

Math.round(x)

x を四捨五入して、近似の整数を返す

Math.sign(x)

x の符号を返す。x が正、負、 0 のいずれであるかを返す。

Math.sin(x)

x のサイン (正弦) を返す。

Math.sinh(x)

x のハイパーボリックサイン (双曲線正弦) を返す。

Math.sqrt(x)

x の平方根を返す

Math.tan(x)

x のタンジェント (正接) を返す。

Math.tanh(x)

x のハイパーボリックサイン (双曲線正接) を返す。

Math.trunc(x)

数値 x の小数点以下を削除し、整数の部分を返す。

角度とラジアンの間の変換

三角関数 (sin(), cos(), tan(), asin(), acos(), atan(), atan2()) は、角度にラジアンを要求したり、返したりします。

人間は角度で考える傾向があり、 (CSS 変形関数など) 一部の関数角度を受け付けますので、手軽に両者の間を変換する関数を用意しておくといいでしょう。

js
function degToRad(degrees) {
  return degrees * (Math.PI / 180);
}

function radToDeg(rad) {
  return rad / (Math.PI / 180);
}

正三角形の高さの計算

正三角形の高さを計算したい場合、側辺の長さが 100 であるとわかっている場合は、隣の角に正接を乗じた長さは、反対側と等しくなるという数式を使用することができます。

JavaScript では、次のようにして実現することができます。

js
50 * Math.tan(degToRad(60)).

degToRad() 関数を使用して 60 度をラジアンに変換しています。これは Math.tan() がラジアンの入力値を要求するからです。

2 つの値の間にある整数の乱数を返す

これは Math.random()Math.floor() の組み合わせで実現できます。

js
function random(min, max) {
  const num = Math.floor(Math.random() * (max - min + 1)) + min;
  return num;
}

random(1, 10);

仕様書

Specification
ECMAScript Language Specification
# sec-math-object

ブラウザーの互換性

BCD tables only load in the browser

関連情報