【JavaScript】高度な数値計算を実現するMathメソッドの実装パターン

目次

概要

JavaScriptでの数値処理において、四則演算だけでは対応できない科学技術計算や統計処理を行う場合、標準の Math オブジェクトを使用します。

本記事では、絶対値、べき乗、平方根、対数関数といった主要な数学メソッドの仕様と、実務での活用例を解説します。

仕様(入出力)

  • 入力: 計算対象となる数値(正の数、負の数、小数)
  • 出力: 各種数学関数の計算結果(コンソール出力)

基本の使い方

Math オブジェクトのメソッドは、インスタンス化せずに Math.メソッド名() の形式で直接呼び出します。

主要な数学メソッド一覧

メソッド意味戻り値の例
Math.abs(x)絶対値 (Absolute Value)符号を取り除いた数値
例: Math.abs(-5) $\rightarrow$ 5
Math.pow(base, exp)べき乗 (Power)base を exp 乗した値
例: Math.pow(2, 3) $\rightarrow$ 8
Math.sign(x)符号判定 (Sign)正なら1、負なら-1、0なら0
例: Math.sign(-10) $\rightarrow$ -1
Math.sqrt(x)平方根 (Square Root)$\sqrt{x}$ の値
例: Math.sqrt(9) $\rightarrow$ 3
Math.log(x)自然対数 (Natural Logarithm)底を $e$ とする対数 ($\ln x$)
例: Math.log(Math.E) $\rightarrow$ 1
Math.exp(x)指数関数 (Exponential)$e^x$ の値

Math.E はネイピア数(自然対数の底、約2.718)を表す定数です。

コード全文(HTML / JavaScript)

HTML (index.html)

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Math Operations Demo</title>
    <script src="math-calc.js" defer></script>
</head>
<body>
    <div class="container">
        <h1>演算結果の確認</h1>
        <p>F12キーを押してコンソールログを確認してください。</p>
    </div>
</body>
</html>

JavaScript (math-calc.js)

各メソッドの挙動を確認するための実装例です。

/**
 * 数学メソッドを使用した計算処理のデモンストレーション
 */
const runMathOperations = () => {
    console.log('--- 1. 絶対値 (Math.abs) ---');
    // 数値の乖離幅や距離を求める際に符号を無視するために使用します
    const valA = 50;
    const valB = -50;
    console.log(`Input: ${valA} -> Result: ${Math.abs(valA)}`);
    console.log(`Input: ${valB} -> Result: ${Math.abs(valB)}`);


    console.log('--- 2. べき乗 (Math.pow) ---');
    // 10の3乗 (10 * 10 * 10)
    const base = 10;
    const exponent = 3;
    const powerResult = Math.pow(base, exponent);
    console.log(`${base} の ${exponent} 乗: ${powerResult}`);


    console.log('--- 3. 符号の判定 (Math.sign) ---');
    // 値が正か負かゼロかを判定します
    // 1: 正, -1: 負, 0: ゼロ
    console.log(`sign(123): ${Math.sign(123)}`);
    console.log(`sign(-99): ${Math.sign(-99)}`);
    console.log(`sign(0): ${Math.sign(0)}`);


    console.log('--- 4. 平方根 (Math.sqrt) ---');
    // 面積から辺の長さを求める場合などに利用
    const areaSize = 25;
    console.log(`√${areaSize} = ${Math.sqrt(areaSize)}`);


    console.log('--- 5. 対数と指数 (Math.log, Math.exp) ---');
    // 自然対数の底 e (ネイピア数)
    console.log(`Math.E (定数): ${Math.E}`);
    
    // log(e) は 1
    console.log(`Math.log(Math.E): ${Math.log(Math.E)}`);
    
    // e の 2乗
    console.log(`Math.exp(2): ${Math.exp(2)}`);
};

// 関数を実行
runMathOperations();

カスタムポイント

  • べき乗演算子の利用:ES2016以降、Math.pow(a, b)a ** b という演算子で記述可能になりました。可読性が向上するため、環境が許す場合はこちらへの置き換えを推奨します。
  • 底の指定:Math.log(x) は自然対数(底 $e$)です。常用対数(底10)が必要な場合は Math.log10(x)、底2の場合は Math.log2(x) を使用してください。

注意点

  1. 負の数の平方根:Math.sqrt(-1) のように負の値を指定すると、計算不能として NaN (Not a Number) が返されます。JavaScriptの標準機能では複素数は扱えません。
  2. 符号判定の戻り値:Math.sign() の戻り値はブール値ではなく数値(1, -1, 0, -0, NaN)です。条件分岐で使用する際は === 1 のように明示的に比較する必要があります。

応用

三平方の定理による距離計算

Math.sqrtMath.pow を組み合わせることで、座標上の2点間の距離を求めることができます。

// 点A(0, 0) と 点B(3, 4) の距離
const x1 = 0, y1 = 0;
const x2 = 3, y2 = 4;

// 距離 = √(x2-x1)^2 + (y2-y1)^2
const distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));

console.log(`2点間の距離: ${distance}`); // 5

まとめ

Math オブジェクトを活用することで、複雑な計算式を自前で実装することなく、高精度な数学処理が可能になります。特に Math.abs(絶対値)や Math.sqrt(平方根)は、UIのアニメーション制御やデータ解析など幅広い分野で利用される基本メソッドです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次