edubun
日本語

数と計算

JavaScript では 0.1 + 0.2 は 0.30000000000000004 になり、17 % 5 は 2 になります。数がどう保存されるか、% が何を意味するかを知れば、どちらも納得できます。

算術演算子

コンピューターがすることのほとんどは、つきつめれば計算です。JavaScript では、紙に書くのとほとんど同じように計算を書きます。計算をする記号を演算子と呼びます。五つはもう知っているもので、二つは新しいものです。

演算子意味例結果
+足し算7 + 29
-引き算7 - 25
*かけ算7 * 214
/割り算7 / 23.5
%余り7 % 21
**累乗7 ** 249

かけ算にはアスタリスクを使います。文字 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);   // 29

Math の便利な道具

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 位までの文字列にする
  1. 何が表示されますか?
    console.log(2 + 3 * 4);
  2. 何が表示されますか?
    console.log((2 + 3) * 4);
  3. 何が表示されますか?
    console.log(17 % 5);
  4. 何が表示されますか?
    console.log(9 / 2);
  5. 何が表示されますか?
    console.log(2 ** 5);
  6. 何が表示されますか?
    let x = 10;
    x += 4;
    x *= 2;
    console.log(x);
  7. 何が表示されますか?
    let n = 5;
    n++;
    n++;
    n--;
    console.log(n);
  8. 何が表示されますか?
    console.log(Math.floor(7.9), Math.ceil(7.1));
    • 8 8
    • 7 8
    • 7 7
  9. 何が表示されますか?
    console.log(Math.max(3, 11, 6) - Math.min(3, 11, 6));
  10. 何が表示されますか?
    console.log(10 - 4 - 3);
  11. どんな偶数 n でも true になる式はどれですか?
    • n % 2 === 0
    • n / 2 === 0
    • n % 2 === 1
  12. 何が表示されますか?
    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