JavaScript 速習チュートリアル

JavaScript Math オブジェクト

1. Math オブジェクトの概要

JavaScript の Math オブジェクトを使用すると、数値に対して数学的なタスクを実行できます。

Math オブジェクトは static(静的) なオブジェクトです。
他のオブジェクトとは異なり、Math オブジェクトをインスタンス化(new Math())することなく、すべてのメソッドやプロパティを直接使用できます。

Math.PI; // インスタンスを作成せずに直接アクセス可能

2. Math プロパティ(数学定数)

Math プロパティの構文は Math.property です。
JavaScript は、Math プロパティとしてアクセスできる 8 つの数学定数を提供しています。

Math.E        // ネイピア数(オイラー数)を返します
Math.PI       // 円周率(PI)を返します
Math.SQRT2    // 2 の平方根を返します
Math.SQRT1_2  // 1/2 の平方根を返します
Math.LN2      // 2 の自然対数を返します
Math.LN10     // 10 の自然対数を返します
Math.LOG2E    // 底を 2 とする E の対数を返します
Math.LOG10E   // 底を 10 とする E の対数を返します

3. Math メソッド

Math メソッドの構文は Math.method(number) です。

3.1 数値を整数に丸める方法

数値を整数に丸める(端数処理)ための一般的なメソッドは 4 つあります。

メソッド説明
Math.round(x)x を最も近い整数に四捨五入して返します
Math.ceil(x)x を切り上げて最も近い整数にして返します
Math.floor(x)x を切り下げて最も近い整数にして返します
Math.trunc(x)x の整数部分のみを返します(ES6 で導入)

3.2 Math.round()

Math.round(x) は、x を最も近い整数に返します。

Math.round(4.6); // 5 を返します
Math.round(4.5); // 5 を返します
Math.round(4.4); // 4 を返します

3.3 Math.ceil()

Math.ceil(x) は、x を 切り上げ て最も近い整数を返します。

Math.ceil(4.9);  // 5
Math.ceil(4.7);  // 5
Math.ceil(4.4);  // 5
Math.ceil(4.2);  // 5
Math.ceil(-4.2); // -4

3.4 Math.floor()

Math.floor(x) は、x を 切り下げ て最も近い整数を返します。

Math.floor(4.9);  // 4
Math.floor(4.7);  // 4
Math.floor(4.4);  // 4
Math.floor(4.2);  // 4
Math.floor(-4.2); // -5

3.5 Math.trunc()

Math.trunc(x) は、x の整数部分のみを返します(小数点以下を破棄します)。

Math.trunc(4.9);  // 4
Math.trunc(4.7);  // 4
Math.trunc(4.4);  // 4
Math.trunc(4.2);  // 4
Math.trunc(-4.2); // -4

4. 数値の判定

4.1 Math.sign()

Math.sign(x) は、x が負、ゼロ、または正であるかを返します。

  • 正の数の場合:1
  • 負の数の場合:-1
  • ゼロの場合:0

Math.sign(-4); // -1 を返します
Math.sign(0);  // 0 を返します
Math.sign(4);  // 1 を返します

Math.trunc()Math.sign()ES6 (JavaScript 2015) で追加されました。

5. べき乗、平方根、絶対値

5.1 Math.pow()

Math.pow(x, y) は、x の y 乗の値を返します。

Math.pow(8, 2); // 64 を返します

5.2 Math.sqrt()

Math.sqrt(x) は、x の平方根を返します。

Math.sqrt(64); // 8 を返します

5.3 Math.abs()

Math.abs(x) は、x の絶対値(常に正の数)を返します。

Math.abs(-4.7); // 4.7 を返します

6. 三角関数6.1 Math.sin()Math.sin(x) は、角度 x(ラジアンで指定)の正弦(サイン、-1 から 1 の値)を返します。度数(degree)をラジアン(radian)に変換するには、以下の公式を使用します。

Angle in radians = Angle in degrees x π / 180

Math.sin(90 * Math.PI / 180); // 1 を返します(90度のサイン)

6.2 Math.cos()

Math.cos(x) は、角度 x(ラジアンで指定)の余弦(コサイン、-1 から 1 の値)を返します。

Math.cos(0 * Math.PI / 180); // 1 を返します(0度のコサイン)

7. 最大値・最小値と乱数

7.1 Math.min() と Math.max()

Math.min() および Math.max() は、引数のリストの中から最小値または最大値を見つけるために使用できます。

Math.min(0, 150, 30, 20, -8, -200); // -200 を返します
Math.max(0, 150, 30, 20, -8, -200); // 150 を返します

7.2 Math.random()

Math.random() は、0(含む)から 1(含まない)までの間のランダムな数値を返します。

Math.random(); // 例: 0.123456789

8. 対数関数 (Logarithms)

8.1 Math.log() メソッド

Math.log(x) は、x の自然対数(底が E の対数)を返します。
自然対数は、特定の成長レベルに達するために必要な時間を返すと考えることができます。

Math.log(1); // 0
Math.log(2); // 0.693...
Math.log(3); // 1.098...

Math.EMath.log() は密接な関係にあります。10 を得るために Math.E を何乗する必要があるでしょうか?

Math.log(10); // 2.302...

8.2 Math.log2() メソッド

Math.log2(x) は、底を 2 とする x の対数を返します。
8 を得るために 2 を何乗する必要があるでしょうか?

Math.log2(8); // 3

8.3 Math.log10() メソッド

Math.log10(x) は、底を 10 とする x の対数を返します。
1000 を得るために 10 を何乗する必要があるでしょうか?

Math.log10(1000); // 3