初心者向け:Math オブジェクトの基本
Math は「数値計算の便利セット」です。丸め、絶対値、最小・最大、乱数、平方根、三角関数、指数・対数などがまとまっています。クラスやインスタンスは不要で、すべて Math.関数名 で呼び出します。
よく使う丸めと基本関数
- 切り捨て(floor)
Math.floor(3.9); // 3
Math.floor(-3.1); // -4(負の数は小さくなる方向へ)
JavaScript- 切り上げ(ceil)
Math.ceil(3.1); // 4
Math.ceil(-3.9); // -3
JavaScript- 四捨五入(round)
Math.round(3.5); // 4
Math.round(3.49); // 3
JavaScript- 小数点以下を切り捨て(trunc)
Math.trunc(3.9); // 3
Math.trunc(-3.9); // -3
JavaScript- 絶対値(abs)
Math.abs(-5); // 5
JavaScript- 符号判定(sign)
Math.sign(10); // 1
Math.sign(-7); // -1
Math.sign(0); // 0
JavaScript最大・最小・範囲に収める
- 最大値・最小値
Math.max(3, 10, 7); // 10
Math.min(3, 10, 7); // 3
JavaScript- 配列に使う(スプレッド)
const nums = [5, 2, 9];
Math.max(...nums); // 9
Math.min(...nums); // 2
JavaScript- クランプ(範囲に収める)
const clamp = (x, lo, hi) => Math.min(Math.max(x, lo), hi);
clamp(120, 0, 100); // 100
JavaScriptべき乗・平方根・指数・対数・定数
- べき乗
Math.pow(2, 3); // 8
2 ** 3; // 8
JavaScript- 平方根・立方根
Math.sqrt(9); // 3
Math.cbrt(8); // 2
JavaScript- 指数・対数(自然対数)
Math.exp(1); // e^1 ≈ 2.718...
Math.log(Math.E); // 1(自然対数)
JavaScript- 二乗の合計の平方根(hypot)
Math.hypot(3, 4); // 5(ピタゴラス)
JavaScript- 主な定数
Math.PI; // 円周率 ≈ 3.14159...
Math.E; // 自然対数の底 ≈ 2.71828...
JavaScript乱数(random)の使い方
- 0以上1未満の乱数
Math.random(); // 例: 0.372...
JavaScript- 整数乱数(範囲指定)
0〜n-1
const randN = (n) => Math.floor(Math.random() * n);
randN(6); // 0..5
JavaScripta〜b(両端含む)
const randInt = (a, b) => Math.floor(Math.random() * (b - a + 1)) + a;
randInt(10, 15); // 10..15
JavaScript- 配列からランダムに1つ
const pick = (arr) => arr[Math.floor(Math.random() * arr.length)];
pick(["red", "green", "blue"]);
JavaScript三角関数と角度変換(ラジアン)
- 度→ラジアン
const toRad = (deg) => deg * Math.PI / 180;
JavaScript- sin / cos / tan
Math.sin(toRad(30)); // ≈ 0.5
Math.cos(toRad(60)); // ≈ 0.5
Math.tan(toRad(45)); // ≈ 1
JavaScript- 逆三角関数(結果はラジアン)
const rad = Math.atan2(4, 3); // y=4, x=3
const deg = rad * 180 / Math.PI; // 度に変換
JavaScript実用パターン
- 金額の端数処理
const price = 1234.567;
const rounded = Math.round(price); // 1235(円単位)
const roundTo10 = Math.round(price / 10) * 10; // 1230(10円単位)
JavaScript- 小数点 n 桁に丸め(表示用)
const roundTo = (x, n) => Math.round(x * 10 ** n) / 10 ** n;
roundTo(Math.PI, 3); // 3.142
JavaScript- 距離計算(2点間の直線距離)
const distance = (x1, y1, x2, y2) => Math.hypot(x2 - x1, y2 - y1);
distance(0, 0, 3, 4); // 5
JavaScript- 正規化(値を 0..1 にスケーリング)
const normalize = (x, min, max) => (x - min) / (max - min);
normalize(75, 50, 100); // 0.5
JavaScript- 疑似乱数で抽選
const lottery = () => Math.random() < 0.1 ? "当たり" : "はずれ";
JavaScriptよくあるつまずきと注意点
- 乱数は 0 以上 1 未満。上限を含める整数乱数では「+1」を忘れない。
- 三角関数はラジアンで扱う。度数法のまま渡すと結果がずれる。
- 浮動小数点誤差に注意。例えば 0.1 + 0.2 が厳密に 0.3 にならない。表示用に丸めるか、誤差を許容する比較を使う。
Math.max(...arr)は空配列で-Infinity、Math.min(...arr)はInfinity。空ケースは事前に処理する。- floor/ceil/round/trunc の違いを理解して、意図に合う丸めを選ぶ。
ミニ練習
- 問1: 3.6 を切り捨て・切り上げ・四捨五入せよ。
console.log(Math.floor(3.6)); // 3
console.log(Math.ceil(3.6)); // 4
console.log(Math.round(3.6)); // 4
JavaScript- 問2: 配列 [4, 9, 1, 7] の最大値・最小値を求めよ。
const arr = [4, 9, 1, 7];
console.log(Math.max(...arr)); // 9
console.log(Math.min(...arr)); // 1
JavaScript- 問3: 1〜6 のサイコロを 1 回振る疑似乱数を作れ。
const dice = Math.floor(Math.random() * 6) + 1;
console.log(dice); // 1..6
JavaScript- 問4: 角度 30 度の正弦値を計算せよ(度→ラジアン変換)。
const toRad = (deg) => deg * Math.PI / 180;
console.log(Math.sin(toRad(30))); // ≈ 0.5
JavaScriptまとめ
- Math は数値計算の標準ツール箱。丸め・絶対値・最大/最小・乱数・平方根・指数/対数・三角関数が揃う。
- 乱数の範囲、角度のラジアン変換、配列との組み合わせなど、日常の実装に直結する。
- 丸めの違いと浮動小数点の癖を理解し、意図どおりの数値処理を書こう。
