Mathオブジェクトは、JavaScriptのビルドインオブジェクトの一つです。
数値の計算を行う際に使用され、プログラムの安全性や可読性を高めるために役に立ちます。

今回は、Mathオブジェクトとは何か、また静的プロパティについて解説していきます。

Mathオブジェクト

Mathオブジェクトは、数学における定数や関数を提供するJavaScriptのビルドインオブジェクトです。
ビルドインオブジェクトですが、他のオブジェクトとは異なりコンストラクタを持ちません。

例えば、Dateオブジェクトにはインスタンスに使えるメソッドがあります。

let date = new Date();
// Dateのインスタンスメソッド
console.log(date.getMonth()); // 5

しかし、Mathオブジェクトはコンストラクタを持たないため、newでインスタンスを作成することができません。
言い換えると、Mathオブジェクトのプロパティやメソッドはすべて静的であるということです。

Math.静的プロパティ;

このように、Mathオブジェクトから直接プロパティを呼び出し、数値計算を行うことができます。

静的プロパティ

Mathオブジェクトには、次の静的プロパティが用意されています。

プロパティ 機能
Math.E 自然対数の底 2.718…
Math.LN2 2の自然対数 0.693…
Math.LN10 10の自然対数 2.302…
Math.LOG2E 2を底とするEの対数 1.442…
Math.LOG10E 10を底とするEの対数 0.434…
Math.PI 円周率 3.14159…
Math.SQRT1_2 1/2の平方根 0.707…
Math.SQRT2 2の平方根 1.141…

これらのプロパティは、決められた値を表現するための定数であるため、任意で設定を変更することはできません。
円周率や2の平方根など、既に取得したい値が決まっている場合にかんたんに導入することができるので便利です。

対数の計算

対数とは、aをx乗するとbになる時のxに当たる部分の数です。
つまり、aを何乗するとbになるか表す数のことです。

b = ax
x = logab

英語でlogarithmと呼ばれるように、数学の公式などではlogを使って表現されます。

よって、Mathオブジェクトの対数を計算する静的プロパティは、以下のように表現することができます。

Math.LN2 → loge2
Math.NL10 → loge10
Math.LOG2E → log2e
Math.LOG10E → log10e

実際に使ってみると次の結果が得られます。

console.log(Math.E); // 2.718281828459045
console.log(Math.LN2); // 0.6931471805599453
console.log(Math.LN10); // 2.302585092994046
console.log(Math.LOG2E); // 1.4426950408889634
console.log(Math.LOG10E); // 0.4342944819032518

円周率の計算

円周率とは、円の直径に対する円周の長さの比率のことです。
Math.PIを使うと円周率を計算することができます。

console.log(Math.PI); // 3.141592653589793

円周率は、円周の長さや面積を計算する際に使うと便利です。

// 円の半径
let radius = 5;

// 円周の長さ
let circumference = 2 * Math.PI * radius;
console.log(circumference); // 31.41592653589793

// 円の面積
let area = Math.PI * radius * radius;
console.log(area); // 78.53981633974483

平方根の計算

平方根とは、ある数aに対して、二乗してaになる数のことです。
bを2乗するとaになる時、bをaの平方根と呼びます。

a = b2
b = √a(ルート)

数学の公式などでは、√(ルート)を使って表現されます。
Math.SQRT1_2は1/2の平方根、Math.SQRT2は2の平方根を得ることができます。

console.log(Math.SQRT1_2); // 0.7071067811865476
console.log(Math.SQRT2); // 1.4142135623730951

まとめ

今回は、Mathオブジェクトの静的プロパティについて解説しました。

// ポイント
* Mathオブジェクトは、数学における定数や関数を提供するビルドインオブジェクト
* コンストラクタは持たないため、インスタンス化はできない
* メソッドやプロパティは全て静的
* 自然対数や円周率、平方根を計算するプロパティが提供されている

一から数値の計算を行おうとすると、計算ミスも発生しやすくなります。
あらかじめ用意されているMathオブジェクトのプロパティを使うことで、計算を正確に行うだけでなく、コードの複雑化を防ぐこともできます。積極的に取り入れてみてください。

合わせて読みたいMathオブジェクトシリーズ

第1回:Mathオブジェクトと静的プロパティ(当記事)
第2回:Mathオブジェクトと静的メソッド