JavaScript | 基礎構文:数値・演算 – Math オブジェクト

JavaScript JavaScript
スポンサーリンク

初心者向け: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
JavaScript

a〜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) は空配列で -InfinityMath.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 は数値計算の標準ツール箱。丸め・絶対値・最大/最小・乱数・平方根・指数/対数・三角関数が揃う。
  • 乱数の範囲、角度のラジアン変換、配列との組み合わせなど、日常の実装に直結する。
  • 丸めの違いと浮動小数点の癖を理解し、意図どおりの数値処理を書こう。
タイトルとURLをコピーしました