数と計算
JavaScript では 0.1 + 0.2 は 0.30000000000000004 になり、17 % 5 は 2 になります。数がどう保存されるか、% が何を意味するかを知れば、どちらも納得できます。
算術演算子
コンピューターがすることのほとんどは、つきつめれば計算です。JavaScript では、紙に書くのとほとんど同じように計算を書きます。計算をする記号を演算子と呼びます。五つはもう知っているもので、二つは新しいものです。
| 演算子 | 意味 | 例 | 結果 |
|---|---|---|---|
| + | 足し算 | 7 + 2 | 9 |
| - | 引き算 | 7 - 2 | 5 |
| * | かけ算 | 7 * 2 | 14 |
| / | 割り算 | 7 / 2 | 3.5 |
| % | 余り | 7 % 2 | 1 |
| ** | 累乗 | 7 ** 2 | 49 |
かけ算にはアスタリスクを使います。文字 x だと、x という名前の変数とまぎらわしいからです。割り算はいつも小数も含めた正確な答えを出します。7 / 2 は 3 ではなく 3.5 です。余りの演算子 % は割り算をして、余りだけを残します。17 % 5 は 2 です。17 の中に 5 は 3 回入って (15)、2 が余るからです。ちょっとした珍しい機能に聞こえますが、プログラミングでいちばんよく使われる演算子の一つです。数が偶数なのは、ちょうど n % 2 が 0 のときです。また minutes % 60 は、ちょうどの時間を取り除いた残りの分数を表します。
計算の順序
JavaScript は学校の算数・数学と同じ順序にしたがいます。まず累乗、次にかけ算・割り算・余り、そのあとに足し算・引き算です。同じ順位の演算子は左から右へ計算しますが、** だけは右から左へ計算します。かっこはすべてに優先します。迷ったらかっこをつけましょう。手間はかからず、次に読む人に意図がはっきり伝わります。
console.log(2 + 3 * 4); // 14
console.log((2 + 3) * 4); // 20
console.log(20 - 6 / 2); // 17
console.log(2 ** 3 * 5); // 40変数を更新する短い書き方
変数をその変数自身の値で更新することはとても多いので、短い書き方があります。x += 5 は x = x + 5 という意味で、同じ形の -=、*=、/= もあります。ちょうど 1 を足したり引いたりするには、もっと短い書き方があります。x++ は 1 を足し、x-- は 1 を引きます。++ はループでいつも見かけることになります。
let coins = 10;
coins += 5; // 15
coins *= 2; // 30
coins--; // 29
console.log(coins); // 29Math の便利な道具
JavaScript には Math という組みこみのオブジェクトがあり、すぐに使える数の道具がそろっています。Math.round(2.5) はいちばん近い整数に四捨五入し (3)、Math.floor(2.9) はいつも切り捨て (2)、Math.ceil(2.1) はいつも切り上げます (3)。Math.max(4, 9, 2) は渡した値のうちいちばん大きいものを、Math.min はいちばん小さいものを返します。Math.sqrt(81) は平方根の 9 で、Math.PI は円周率 π、約 3.14159 です。Math.floor と % は相性のよい組み合わせです。135 分なら、Math.floor(135 / 60) が 2 時間、135 % 60 が 15 分です。
なぜ 0.1 + 0.2 はちょうど 0.3 にならないのか
JavaScript はどの数も、決まった量のメモリーを使って 2 進数で保存します。これは ECMAScript 標準が定める IEEE 754 倍精度形式にしたがったものです。0.1 のようなふつうの小数の中には、1/3 を 10 進数で正確に書けないのと同じように、2 進数では正確に書けないものがあります。小さな丸め誤差はふだん隠れていますが、ときどき表に出ます。0.1 + 0.2 は 0.30000000000000004 と表示されます。これはあなたのコードのバグではありません。お金や測った値を人に見せるときは、結果を丸めましょう。たとえば (0.1 + 0.2).toFixed(2) とすれば、文字列 "0.30" が得られます。整数はおよそ九千兆までなら正確に保存されるので、数を数える計算に影響が出ることはありません。
例題
例 1. 80、90、85 の平均は (80 + 90 + 85) / 3 です。かっこがないと、80 + 90 + 85 / 3 は 85 だけを割ってしまい、約 198.3 になります。例 2. 2024 は 4 の倍数でしょうか。2024 % 4 は 0 なので、倍数です。例 3. 50 個のお菓子を 6 人の子どもで分けると、Math.floor(50 / 6) で一人 8 個、50 % 6 で 2 個余ります。
| 演算子 | 値に対して計算をする記号:+ - * / % ** |
| % | 割り算の余り:17 % 5 は 2 |
| ** | 累乗:2 ** 3 は 8 |
| += | x += 5 は x = x + 5 という意味 |
| ++ | 変数にちょうど 1 を足す |
| Math.floor | 切り捨てて整数にする |
| Math.round | いちばん近い整数に四捨五入する |
| toFixed(2) | 数を小数第 2 位までの文字列にする |
- 何が表示されますか?
console.log(2 + 3 * 4); - 何が表示されますか?
console.log((2 + 3) * 4); - 何が表示されますか?
console.log(17 % 5); - 何が表示されますか?
console.log(9 / 2); - 何が表示されますか?
console.log(2 ** 5); - 何が表示されますか?
let x = 10; x += 4; x *= 2; console.log(x); - 何が表示されますか?
let n = 5; n++; n++; n--; console.log(n); - 何が表示されますか?
console.log(Math.floor(7.9), Math.ceil(7.1));- 8 8
- 7 8
- 7 7
- 何が表示されますか?
console.log(Math.max(3, 11, 6) - Math.min(3, 11, 6)); - 何が表示されますか?
console.log(10 - 4 - 3); - どんな偶数 n でも true になる式はどれですか?
n % 2 === 0n / 2 === 0n % 2 === 1
- 何が表示されますか?
console.log((0.1 + 0.2).toFixed(2));
- + - * / は数学と同じように働き、/ は小数を残す。
- % は余りを出す。n % 2 === 0 なら n は偶数。
- ** は累乗。かっこが最初、次に **、次に * / %、最後に + -。
- x += 5 や x++ は x を更新する短い書き方。
- Math.floor、Math.round、Math.ceil、Math.max、Math.min、Math.PI。
- 小数には小さな丸め誤差がふくまれることがある。表示には toFixed を使う。
このコースの出典 (2)
- MDN Web Docs, JavaScript Guide (developer.mozilla.org/en-US/docs/Web/JavaScript/Guide, chapters Introduction, Grammar and types, Control flow, Loops and iteration, Functions, Expressions and operators, Numbers and strings, Indexed collections, Working with objects; checked 2026-10-17)
- Ecma International, ECMA-262 ECMAScript 2026 Language Specification, 17th edition, June 2026 (tc39.es/ecma262 and ecma-international.org/publications-and-standards/standards/ecma-262, checked 2026-10-17)
確認日: 2026-10-17