「JavaScriptで合計金額や平均値を出したいけれど、どう書けばいいの?」 「プログラミングの計算って、算数と同じ考え方で大丈夫?」
JavaScriptで数値の計算を行うときに使う記号を、プログラミング用語で**「算術演算子(さんじゅつえんざんし)」**と呼びます。
足し算や引き算といった基本は算数と同じですが、プログラミング特有の「余り(あまり)の計算」や「値を1つ増やす特殊な記号」など、知っておくと便利なテクニックがたくさんあります。
この記事では、算術演算子の全種類から、計算の優先順位、そして初心者がハマりやすい「計算の落とし穴」まで、プロの視点で徹底的に解説します。
基本の五則演算:日常的に使う算術演算子
まずは、最も頻繁に使う5つの演算子を確認しましょう。これらは算数の記号と似ていますが、掛け算と割り算の記号が少し特殊です。
加算(+):足し算
数値を足すときに使います。
console.log(10 + 5); // 結果: 15
減算(-):引き算
数値を引くときに使います。
console.log(10 - 5); // 結果: 5
乗算(*):掛け算
「x」ではなく、アスタリスク * を使います。
console.log(10 * 5); // 結果: 50
除算(/):割り算
「÷」ではなく、スラッシュ / を使います。
console.log(10 / 5); // 結果: 2
剰余(%):割り算の「余り」
パーセント記号 % を使うと、割り算をしたときの「余り」だけを取得できます。
console.log(10 % 3); // 結果: 1(10÷3=3 余り 1)
この剰余演算は、実務では「偶数か奇数かの判定(2で割った余りが0なら偶数)」などに非常によく使われます。
べき乗とインクリメント:プログラミング特有の演算子
次に、少し特殊な演算子を見ていきましょう。これらを使いこなせると、コードがぐっと短く、スマートになります。
べき乗(**):累乗の計算
「2の3乗(2x2x2)」のような計算には ** を使います。
console.log(2 ** 3); // 結果: 8
インクリメント(++):値を1増やす
変数の中身を1だけ増やしたいときに使います。
let count = 1;
count++;
console.log(count); // 結果: 2
ループ処理(繰り返し)で回数を数えるときなどに多用されます。
デクリメント(–):値を1減らす
逆に、変数の中身を1だけ減らしたいときに使います。
let count = 10;
count--;
console.log(count); // 結果: 9
重要!インクリメントの「前置」と「後置」の違い
++ を変数の前に書くか、後に書くかで、実行されるタイミングが変わります。これは中級者でも一瞬迷うポイントです。
後置演算(count++)
「今の値を使ってから、後で1増やす」という動きをします。
let a = 5;
let b = a++;
console.log(a); // 6
console.log(b); // 5(増える前の値が代入される)
前置演算(++count)
「先に1増やしてから、その値を使う」という動きをします。
let a = 5;
let b = ++a;
console.log(a); // 6
console.log(b); // 6(増えた後の値が代入される)
初心者のうちは混乱しやすいため、基本的には「後置(count++)」を使い、複雑な式の中では使わないようにするのが安全です。
代入演算子との組み合わせ(複合代入演算子)
「今の値に10を足して、また同じ変数に保存し直したい」という場合、普通に書くとこうなります。
score = score + 10;
これを短く書けるのが「複合代入演算子」です。
複合代入演算子の種類
+=:x += yはx = x + yと同じ-=:x -= yはx = x - yと同じ*=:x *= yはx = x * yと同じ/=:x /= yはx = x / yと同じ
let score = 100;
score += 50; // score = 100 + 50 と同じ
console.log(score); // 150
計算の優先順位:正しい順番を覚えよう
JavaScriptの計算順序は、基本的には算数のルールと同じ「掛け算・割り算が先、足し算・引き算が後」です。
標準的な優先順位
- カッコの中( )
- べき乗 **
- 乗算 * ・除算 / ・剰余 %
- 加算 + ・減算 –
意図通りに計算させるコツ
複雑な計算をするときは、「迷ったらカッコを付ける」のが鉄則です。
// 平均値を出すとき
const total = 100 + 200 + 300;
const average = (100 + 200 + 300) / 3; // カッコがないと 300 / 3 が先に計算されてしまう
初心者がハマる!JavaScript計算の「3つの落とし穴」
ここからは、教科書にはあまり載っていないけれど、実際の開発で必ずぶつかる注意点を解説します。
文字列が混ざると計算が壊れる
数値と文字列を + で繋ぐと、計算ではなく「文字の連結」になります。
console.log(10 + "20"); // 結果: "1020"(数値ではなく文字列になる)
外部から入力された値(フォームの値など)は、一度Number()で数値に変換してから計算する癖をつけましょう。
浮動小数点数の計算誤差(0.1 + 0.2問題)
驚くべきことに、JavaScript(および多くのプログラミング言語)では以下の計算結果が正確になりません。
console.log(0.1 + 0.2); // 結果: 0.30000000000000004
これはコンピューターが数値を「2進数」で扱っているために起こる限界です。
対策: お金を扱うような厳密な計算では、「一度100倍して整数にしてから計算し、最後に100で割る」といった工夫が必要です。
NaN(Not a Number)の発生
数値ではないもの(例えば文字列の「あ」など)を無理やり計算しようとすると、NaNという特殊な値が返ってきます。
console.log("あ" * 10); // 結果: NaN
一度NaNになると、その後の計算はすべてNaNになってしまいます。「計算結果がおかしいな?」と思ったら、途中でNaNが発生していないかチェックしましょう。
実践:消費税込みの価格計算プログラムを作ってみよう
これまでの知識を総動員して、実用的なコードを書いてみましょう。
const itemPrice = 1200; // 商品価格
const taxRate = 0.1; // 消費税率(10%)
const count = 3; // 購入個数
// 1. 小計を出す
let subtotal = itemPrice * count;
// 2. 税額を出す
let taxAmount = subtotal * taxRate;
// 3. 合計金額を出す
let totalPrice = subtotal + taxAmount;
console.log("小計:" + subtotal + "円");
console.log("税額:" + taxAmount + "円");
console.log("合計:" + totalPrice + "円");
変数を使い、適切な算術演算子を組み合わせることで、どんな複雑な計算も自動化できるようになります。
まとめ:算術演算子をマスターしてロジックを作ろう
今回はJavaScriptの「計算」を支える算術演算子について詳しく解説しました。
- 基本五則演算(+ – * / %)を確実に覚える
- 剰余(%)は偶数・奇数の判定などに便利
- 優先順位に迷ったらカッコ( )を使う
- 0.1 + 0.2 のような小数計算には誤差があることを知っておく
- データ型(数値か文字列か)を常に意識する
算術演算子は、プログラミングにおける「思考の道具」です。これらを組み合わせることで、ゲームのスコア計算から、ネットショップの決済システムまで、あらゆる機能が作れるようになります。
まずはコンソールを使って、身近な計算をJavaScriptにやらせることから始めてみてください!

