Math
====

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

`Math` は `Number` 型で動作します。 `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)`

`x` と `y` の 32 ビット乗算の結果を返す。

`Math.log(x)`

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

`Math.log1p(x)`

`x` の `1 + 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)`

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

![](/ja/docs/Web/JavaScript/Reference/Global_Objects/Math/trigonometry.png)

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 with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Number`