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 はコンストラクターではありません。 new 演算子と共に使用したり、 Math オブジェクトを関数として呼び出したりすることはできません。 Math のプロパティとメソッドはすべて静的です。

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

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

静的プロパティ

Math.E

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

Math.LN10

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

Math.LN2

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

Math.LOG10E

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

Math.LOG2E

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

Math.PI

円周率。約 3.14159 です。

Math.SQRT1_2

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

Math.SQRT2

2 の平方根。約 1.414 です。

Math[Symbol.toStringTag]

[Symbol.toStringTag] プロパティの初期値は文字列 "Math" です。このプロパティは Object.prototype.toString() で使用されます。

静的メソッド

Math.abs()

入力値の絶対値を返します。

Math.acos()

入力値のアークコサイン (逆余弦) を返します。

Math.acosh()

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

Math.asin()

入力値のアークサイン (逆正弦) を返します。

Math.asinh()

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

Math.atan()

入力値のアークタンジェント (逆正接) を返します。

Math.atan2()

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

Math.atanh()

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

Math.cbrt()

入力値の立方根を返します。

Math.ceil()

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

Math.clz32()

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

Math.cos()

入力値のコサイン (余弦) を返します。

Math.cosh()

入力値のハイパーボリックコサイン (双曲線余弦) を返します。

Math.exp()

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

Math.expm1()

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

Math.floor()

入力値以下の最大の整数を返します。

Math.f16round()

入力値に最も近い半精度浮動小数点表現を返します。

Math.fround()

入力値に最も近い単精度浮動小数点表現を返します。

Math.hypot()

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

Math.imul()

入力値の 32 ビット乗算の結果を返します。

Math.log()

入力値の自然対数(㏒e)を返します。

Math.log10()

入力値の 10 を底とした対数 (log10) を返します。

Math.log1p()

入力値の 1 + x の自然対数(㏒e)を返します。

Math.log2()

入力値の 2 を底とした対数 (log2) を返します。

Math.max()

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

Math.min()

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

Math.pow()

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

Math.random()

0 以上 1 未満の擬似乱数を返します。

Math.round()

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

Math.sign()

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

Math.sin()

入力値のサイン (正弦) を返します。

Math.sinh()

入力値のハイパーボリックサイン (双曲線正弦) を返します。

Math.sqrt()

入力値の平方根を返す

Math.tan()

入力値のタンジェント (正接) を返します。

Math.tanh()

入力値のハイパーボリックサイン (双曲線正接) を返します。

Math.trunc()

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

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

三角関数 (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 であるとわかっている場合は、隣の角に正接を乗じた長さは、反対側と等しくなるという数式を使用することができます。

正三角形の 1 つの辺の反対側の頂点から垂線を引くと、3つの辺が「隣り合わせ」、「向かい合わせ」、「斜辺」としてマークされた正しい三角形が形成されます。「隣り合わせ」の辺と「斜辺」の間の角度は 60 度です。

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

関連情報