1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
|
---
title: Math
slug: Web/JavaScript/Reference/Global_Objects/Math
tags:
- JavaScript
- Math
- Namespace
- Reference
- 名前空間
translation_of: Web/JavaScript/Reference/Global_Objects/Math
---
<div>{{JSRef}}</div>
<p><strong><code>Math</code></strong> は、数学的な定数と関数を提供するプロパティとメソッドを持つ、組み込みのオブジェクトです。関数オブジェクトではありません。</p>
<p><code>Math</code> は {{jsxref("Number")}} 型で動作します。 {{jsxref("BigInt")}} 型では動作しません。</p>
<h2 id="Description" name="Description">解説</h2>
<p>他のグローバルオブジェクトと異なり、<code>Math</code> はコンストラクタではありません。<code>Math</code> オブジェクトのすべてのプロパティとメソッドは、静的です。円周率を表す定数πは、<code>Math.PI</code> として参照でき、正弦関数は、 <code>Math.sin(<var>x</var>)</code> として呼び出すことができます (ここでの <code><var>x</var></code> は、メソッドの引数です)。定数は、 JavaScript における実数での完全な精度で定義されています。</p>
<div class="note">
<p><strong>メモ:</strong> 多くの <code>Math</code> 関数の精度は<em>実装に依存します</em>。</p>
<p>これは、ブラウザーごとに結果が異なる場合があることを意味し、同じ JavaScript エンジン上であっても、 OS やアーキテクチャが異なれば結果が異なる場合があります。</p>
</div>
<h2 id="Static_properties" name="Static_properties">静的プロパティ</h2>
<dl>
<dt>{{jsxref("Math.E")}}</dt>
<dd>ネイピア数 (オイラー数)。これは自然対数の底として用いられる数学定数で、約 <code>2.718</code> です。</dd>
<dt>{{jsxref("Math.LN2")}}</dt>
<dd><code>2</code> の自然対数。約 <code>0.693</code> です。</dd>
<dt>{{jsxref("Math.LN10")}}</dt>
<dd><code>10</code> の自然対数。約 <code>2.303</code> です。</dd>
<dt>{{jsxref("Math.LOG2E")}}</dt>
<dd>2 を底とした <code>E</code> の対数。約 <code>1.443</code> です。</dd>
<dt>{{jsxref("Math.LOG10E")}}</dt>
<dd>10 を底とした <code>E</code> の対数。約 <code>0.434</code> です。</dd>
<dt>{{jsxref("Math.PI")}}</dt>
<dd>円周率。約 <code>3.14159</code> です。</dd>
<dt>{{jsxref("Math.SQRT1_2")}}</dt>
<dd>½ の平方根 (または<sup>1</sup>/<sub>√2</sub> とひとしいすう)。約 <code>0.707</code> です。</dd>
<dt>{{jsxref("Math.SQRT2")}}</dt>
<dd><code>2</code> の平方根。約 <code>1.414</code> です。</dd>
</dl>
<h2 id="Static_methods" name="Static_methods">静的メソッド</h2>
<dl>
<dt>{{jsxref("Global_Objects/Math/abs", "Math.abs(<var>x</var>)")}}</dt>
<dd><code><var>x</var></code> の絶対値を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/acos", "Math.acos(<var>x</var>)")}}</dt>
<dd><code><var>x</var></code> のアークコサイン (逆余弦) を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/acosh", "Math.acosh(<var>x</var>)")}}</dt>
<dd><code><var>x</var></code> のハイパーボリックアークコサイン (双曲線逆余弦) を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/asin", "Math.asin(<var>x</var>)")}}</dt>
<dd><code><var>x</var></code> のアークサイン (逆正弦) を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/asinh", "Math.asinh(<var>x</var>)")}}</dt>
<dd><code><var>x</var></code> のハイパーボリックアークサイン (双曲線逆正弦) を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/atan", "Math.atan(<var>x</var>)")}}</dt>
<dd><code><var>x</var></code> のアークタンジェント (逆正接) を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/atanh", "Math.atanh(<var>x</var>)")}}</dt>
<dd><code><var>x</var></code> のハイパーボリックアークタンジェント (双曲線逆正接) を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/atan2", "Math.atan2(<var>y</var>, <var>x</var>)")}}</dt>
<dd>引数で指定されたの比率のアークタンジェント (逆正接) を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/cbrt", "Math.cbrt(<var>x</var>)")}}</dt>
<dd><code><var>x</var></code> の立方根を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/ceil", "Math.ceil(<var>x</var>)")}}</dt>
<dd><code><var>x</var></code> 以上の最小の整数を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/clz32", "Math.clz32(<var>x</var>)")}}</dt>
<dd><code><var>x</var></code> を 2 進数 32 ビット整数値で表した数の先頭の 0 の個数を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/cos", "Math.cos(<var>x</var>)")}}</dt>
<dd><code><var>x</var></code> のコサイン (余弦) を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/cosh", "Math.cosh(<var>x</var>)")}}</dt>
<dd><code><var>x</var></code> のハイパーボリックコサイン (双曲線余弦) を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/exp", "Math.exp(<var>x</var>)")}}</dt>
<dd><code>E<var><sup>x</sup></var></code> を返します。ここで <code><var>x</var></code> は引数であり、 <code>E</code> はオイラー定数 (<code>2.718</code>…, 自然対数の低) です。</dd>
<dt>{{jsxref("Global_Objects/Math/expm1", "Math.expm1(<var>x</var>)")}}</dt>
<dd><code>exp(<var>x</var>)</code> から <code>1</code> を引いた値を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/floor", "Math.floor(<var>x</var>)")}}</dt>
<dd><code><var>x</var></code> 以下の最大の整数を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/fround", "Math.fround(<var>x</var>)")}}</dt>
<dd><code><var>x</var></code> に近似の <a href="https://ja.wikipedia.org/wiki/%E5%8D%98%E7%B2%BE%E5%BA%A6%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0" title="WikiPedia ページへのリンク">単精度</a> 浮動小数点数を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/hypot", "Math.hypot([<var>x</var>[, <var>y</var>[, …]]])")}}</dt>
<dd>引数の二乗和の平方根を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/imul", "Math.imul(<var>x</var>, <var>y</var>)")}}</dt>
<dd><code><var>x</var></code> と <code><var>y</var></code> の 32 ビット乗算の結果を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/log", "Math.log(<var>x</var>)")}}</dt>
<dd><code><var>x</var></code> の自然対数 (㏒<sub>e</sub>) を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/log1p", "Math.log1p(<var>x</var>)")}}</dt>
<dd><code><var>x</var></code> の <code>1 + x</code> の自然対数 (㏒<sub>e</sub>) を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/log10", "Math.log10(<var>x</var>)")}}</dt>
<dd><code><var>x</var></code> の 10 を底とした対数 (log<sub>10</sub>) を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/log2", "Math.log2(<var>x</var>)")}}</dt>
<dd><code><var>x</var></code> の 2 を底とした対数 (log<sub>2</sub>) を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/max", "Math.max([<var>x</var>[, <var>y</var>[, …]]])")}}</dt>
<dd>引数として与えた複数の値の中で最大の値を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/min", "Math.min([<var>x</var>[, <var>y</var>[, …]]])")}}</dt>
<dd>引数として与えた複数の値の中で最小の値を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/pow", "Math.pow(<var>x</var>, <var>y</var>)")}}</dt>
<dd><code><var>x</var></code> を <code><var>y</var></code> で累乗した値、すなわち <code><var>x</var><var><sup>y</sup></var></code> を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/random", "Math.random()")}}</dt>
<dd><code>0</code> 以上 <code>1</code> 未満の疑似乱数を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/round", "Math.round(<var>x</var>)")}}</dt>
<dd><code><var>x</var></code> を四捨五入して、近似の整数を返す</dd>
<dt>{{jsxref("Global_Objects/Math/sign", "Math.sign(<var>x</var>)")}}</dt>
<dd><code><var>x</var></code> の符号を返す。<code><var>x</var></code> が正、負、 0 のいずれであるかを返す。</dd>
<dt>{{jsxref("Global_Objects/Math/sin", "Math.sin(<var>x</var>)")}}</dt>
<dd><code><var>x</var></code> のサイン (正弦) を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/sinh", "Math.sinh(<var>x</var>)")}}</dt>
<dd><code><var>x</var></code> のハイパーボリックサイン (双曲線正弦) を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/sqrt", "Math.sqrt(<var>x</var>)")}}</dt>
<dd><code><var>x</var></code> の平方根を返す</dd>
<dt>{{jsxref("Global_Objects/Math/tan", "Math.tan(<var>x</var>)")}}</dt>
<dd><code><var>x</var></code> のタンジェント (正接) を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/tanh", "Math.tanh(<var>x</var>)")}}</dt>
<dd><code><var>x</var></code> のハイパーボリックサイン (双曲線正接) を返す。</dd>
<dt>{{jsxref("Global_Objects/Math/trunc", "Math.trunc(<var>x</var>)")}}</dt>
<dd>数値 <code><var>x</var></code> の小数点以下を削除し、整数の部分を返す。</dd>
</dl>
<h2 id="例">例</h2>
<h3 id="Converting_between_degrees_and_radians" name="Converting_between_degrees_and_radians">角度とラジアンの間の変換</h3>
<p>三角関数 (<code>sin()</code>, <code>cos()</code>, <code>tan()</code>, <code>asin()</code>, <code>acos()</code>, <code>atan()</code>, <code>atan2()</code>) は、角度に<em>ラジアン</em>を要求したり、返したりします。</p>
<p>人間は角度で考える傾向があり、 (CSS 変形関数など) 一部の関数角度を受け付けますので、手軽に両者の間を変換する関数を用意しておくといいでしょう。</p>
<pre class="brush: js notranslate">function degToRad(degrees) {
return degrees * (Math.PI / 180);
};
function radToDeg(rad) {
return rad / (Math.PI / 180);
};</pre>
<h3 id="Calculating_the_height_of_an_equalateral_triangle" name="Calculating_the_height_of_an_equalateral_triangle">正三角形の高さの計算</h3>
<p>正三角形の高さを計算したい場合、側辺の長さが 100 であるとわかっている場合は、<em>隣の角に正接を乗じた長さは、反対側と等しくなる</em>という数式を使用することができます。</p>
<p><img alt="" src="https://mdn.mozillademos.org/files/14829/trigonometry.png" style="display: block; margin: 0 auto;"></p>
<p>JavaScript では、次のようにして実現することができます。</p>
<pre class="brush: js notranslate">50 * Math.tan(degToRad(60)).</pre>
<p><code>degToRad()</code> 関数を使用して60度をラジアンに変換しています。これは {{jsxref("Math.tan()")}} がラジアンの入力値を要求するからです。</p>
<h3 id="Returning_a_random_integer_between_two_bounds" name="Returning_a_random_integer_between_two_bounds">2つの値の間にある整数の乱数を返す</h3>
<p>これは {{jsxref("Math.random()")}} と {{jsxref("Math.floor()")}} の組み合わせで実現できます。</p>
<pre class="brush: js notranslate">function random(min, max) {
const num = Math.floor(Math.random() * (max - min + 1)) + min;
return num;
}
random(1, 10);</pre>
<h2 id="Specifications" name="Specifications">仕様書</h2>
<table class="standard-table">
<thead>
<tr>
<th scope="col">仕様書</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{SpecName('ESDraft', '#sec-math-object', 'Math')}}</td>
</tr>
</tbody>
</table>
<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
<p>{{Compat("javascript.builtins.Math")}}</p>
<h2 id="See_also" name="See_also">関連情報</h2>
<ul>
<li>{{jsxref("Number")}}</li>
</ul>
|