--- 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> <div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div> <p>{{Compat("javascript.builtins.Math")}}</p> <h2 id="See_also" name="See_also">関連情報</h2> <ul> <li>{{jsxref("Number")}}</li> </ul>