JavaScript | 基礎構文:数値・演算 – 算術演算子(+ – * / %)

JavaScript JavaScript
スポンサーリンク

初心者向け:算術演算子(+ – * / %)の基本

JavaScriptの算術演算子は、数値の計算に使う道具です。基本は「足す・引く・掛ける・割る・余り」です。文字列と混ざると振る舞いが変わることがあるので、注意点も一緒に覚えましょう。


演算子の一覧と基本例

  • 足し算(+):
console.log(1 + 2); // 3
JavaScript
  • 引き算(-):
console.log(5 - 3); // 2
JavaScript
  • 掛け算(*):
console.log(4 * 2); // 8
JavaScript
  • 割り算(/):
console.log(7 / 2); // 3.5
JavaScript
  • 余り(%):
console.log(7 % 3); // 1
JavaScript

ユニコード絵文字などの文字列ではなく、数値型で計算します。数値リテラルは 10, 3.14, -5 など。


割り算と丸め(整数にしたいとき)

  • JavaScriptの割り算は小数になります。例えば、(\frac{7}{2}=3.5)。
  • 整数にしたいときの丸めは目的に応じて使い分けます。
Math.floor(7 / 2); // 3(小数点以下切り捨て)
Math.ceil(7 / 2);  // 4(切り上げ)
Math.round(7 / 2); // 4(四捨五入)
JavaScript
  • 整数除算は特別な演算子はありません。必要なら上記を組み合わせます。

余り(%)の正しい理解

  • (%) は「剰余(remainder)」です。負の数を含むと結果が負になり得ます。
console.log(7 % 3);   // 1
console.log(-7 % 3);  // -1(負の余り)
console.log(7 % -3);  // 1
JavaScript
  • 偶数・奇数判定に便利。
const n = 10;
console.log(n % 2 === 0 ? "偶数" : "奇数"); // "偶数"
JavaScript
  • 一周ごとに繰り返す値の制限(0〜m-1に収める)には、負数対策を含めると安全。
const m = 12;
const x = -1;
const wrapped = ((x % m) + m) % m; // 11(0..11に正規化)
JavaScript

型の混在と自動変換(+ は要注意)

  • (+) は文字列が混じると「結合」に変わります。
console.log(1 + "2");     // "12"(数値+文字列 → 文字列結合)
console.log("1" + 2 + 3); // "123"(最初が文字列なのでずっと結合)
console.log(1 + 2 + "3"); // "33"(先に計算で3、最後に結合)
JavaScript
  • 他の演算子(- * / %)は文字列を数値に変換して計算しようとします。
console.log("6" - 1); // 5
console.log("3" * 2); // 6
console.log("8" / 2); // 4
JavaScript
  • 安全に計算したいなら、先に数値へ変換してから計算する。
const a = Number("10");
const b = Number("20");
console.log(a + b); // 30
JavaScript

特殊値(Infinity / -Infinity / NaN)

  • 0で割ると (\infty) 相当の値になります(例外ではなく特殊値)。
console.log(1 / 0);  // Infinity
console.log(-1 / 0); // -Infinity
JavaScript
  • 計算できない結果は NaN(Not a Number)。文字列が数値化できないときなどに出ます。
console.log("foo" * 2);  // NaN
Number.isNaN("foo" * 2); // true(NaN判定はこれを使う)
JavaScript

実用パターン

  • 合計・平均:
const nums = [10, 20, 30];
const sum = nums.reduce((s, x) => s + x, 0); // 60
const avg = sum / nums.length;               // 20
JavaScript
  • 税込計算(10%):
const price = 1000;
const taxRate = 0.1;
const total = Math.round(price * (1 + taxRate)); // 1100(四捨五入)
JavaScript
  • 時間の換算(秒→分と秒):
const seconds = 125;
const minutes = Math.floor(seconds / 60); // 2
const secs = seconds % 60;                // 5
console.log(`${minutes}${secs}秒`);
JavaScript
  • ページングの計算(開始インデックス):
const page = 3;      // 3ページ目(1始まり)
const perPage = 20;
const start = (page - 1) * perPage; // 40(0始まりの開始位置)
JavaScript

よくあるつまずきと回避策

  • (+) は文字列結合に化けやすい。計算と結合を混在させない、テンプレートリテラルを使う。
  • (%) の負の結果に注意。範囲正規化には (((x % m) + m) % m) を使う。
  • 小数の丸めは意図に合わせて Math.floor/ceil/round を使う。
  • NaN 判定は Number.isNaN()===== では判定できない(NaNは自分とさえ等しくない)。

ミニ練習

  • 問1: 7と5の合計・差・積・商をそれぞれ出力せよ。
console.log(7 + 5); // 12
console.log(7 - 5); // 2
console.log(7 * 5); // 35
console.log(7 / 5); // 1.4
JavaScript
  • 問2: 13を3で割った余りを表示し、奇数判定を行え。
console.log(13 % 3);           // 1
console.log(13 % 2 !== 0);     // true(奇数)
JavaScript
  • 問3: 文字列 “10” と “20” を数値に変換して合計せよ(結合にならないように)。
console.log(Number("10") + Number("20")); // 30
JavaScript
  • 問4: 秒数 367 を「6分7秒」に変換せよ。
const s = 367;
console.log(`${Math.floor(s / 60)}${s % 60}秒`); // 6分7秒
JavaScript

まとめ

  • + – * / % は数値計算の基本。割り算は小数、% は余り。
  • 「+ は文字列結合に変わる」ことに注意し、計算前に数値化する。
  • 丸めは Math.floor/ceil/round、NaNは Number.isNaN() で扱う。
  • 現実の処理(平均、時間換算、ページング)に直結する基本スキル。
タイトルとURLをコピーしました