JavaScriptのMath.floor(), Math.ceil(), Math.round()の違いを比較解説!初心者でもわかる数値の丸め方
生徒
「先生、JavaScriptで小数点の数字を丸めたいときって、どうすればいいですか?」
先生
「いい質問ですね。JavaScriptには、数値を丸めるための便利な関数がいくつかあります。たとえば、Math.floor()、Math.ceil()、Math.round()などです。」
生徒
「それぞれどう違うんですか?全部“丸める”ってことは同じじゃないんですか?」
先生
「似ているようで、それぞれの動きはちょっと違います。順番に詳しく見ていきましょう!」
1. Math.floor()とは?小数点以下を切り捨てる関数
Math.floor()は、「小数点以下を切り捨てる」関数です。つまり、少数部分をすべて取り除いて、整数部分だけを残します。
たとえば、3.9をMath.floor()に渡すと、結果は3になります。小数点以下がどんなに大きくても、常に下の整数になります。
console.log(Math.floor(3.9)); // 3
console.log(Math.floor(7.1)); // 7
console.log(Math.floor(-2.3)); // -3(マイナスの場合は注意!)
マイナスの数値では、「より小さい方向」に切り捨てられます。たとえば、-2.3は-3になります。ここが初心者の方がよく混乱するポイントです。
-2.3 → -3 に切り捨て
2. Math.ceil()とは?小数点以下を切り上げる関数
Math.ceil()は、「小数点以下を切り上げる」関数です。つまり、少数部分が少しでもあれば、整数部分を1つ大きくします。
console.log(Math.ceil(3.1)); // 4
console.log(Math.ceil(7.9)); // 8
console.log(Math.ceil(-2.3)); // -2(マイナスでは大きい方向になる)
マイナスのときは、注意が必要です。-2.3は「上方向(大きいほう)」に丸められるので、-2になります。
-2.3 → -2 に切り上げ
つまり、Math.ceil()は常に「天井(ceil)」の方向、つまり上に向かって丸める関数です。
3. Math.round()とは?四捨五入する関数
Math.round()は「四捨五入」する関数です。これは、私たちが日常で使う“普通の丸め方”ですね。
小数点以下が0.5未満なら切り捨て、0.5以上なら切り上げます。
console.log(Math.round(3.1)); // 3
console.log(Math.round(3.5)); // 4
console.log(Math.round(7.9)); // 8
console.log(Math.round(-2.5)); // -2(0.5は切り上げ方向)
3.4 → 3 に四捨五入
3.5 → 4 に四捨五入
この関数は日常的な「四捨五入」と同じ考え方で動くので、最も直感的に理解しやすい丸め方です。
4. 3つの関数の違いを表で比較しよう
ここまでの内容を整理すると、Math.floor()、Math.ceil()、Math.round()の違いは次のようになります。
<table class="table table-bordered text-center">
<thead class="table-light">
<tr>
<th>関数名</th>
<th>意味</th>
<th>3.7の結果</th>
<th>-2.7の結果</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Math.floor()</code></td>
<td>小数点以下を切り捨て</td>
<td>3</td>
<td>-3</td>
</tr>
<tr>
<td><code>Math.ceil()</code></td>
<td>小数点以下を切り上げ</td>
<td>4</td>
<td>-2</td>
</tr>
<tr>
<td><code>Math.round()</code></td>
<td>四捨五入</td>
<td>4</td>
<td>-3</td>
</tr>
</tbody>
</table>
5. 小数点以下を指定して丸めたいときの応用
上記の関数は「整数」に丸めるときに便利ですが、「小数第2位まで」など、桁を指定して丸めたい場合もあります。
その場合は、次のように10のべき乗を使って調整します。
let num = 3.14159;
let rounded = Math.round(num * 100) / 100; // 小数第2位まで四捨五入
console.log(rounded); // 3.14
出力結果: 3.14
このように、10倍してから丸めて10で割り戻すと、指定した桁数で丸めることができます。小数第3位なら1000を使えばOKです。
6. 実践例:お会計の金額を整数に丸める
たとえば、買い物アプリで「税込み金額を整数にしたい」ときには、このように使えます。
let price = 1980;
let tax = price * 0.1; // 消費税10%
let total = price + tax;
console.log("税込金額:", Math.round(total)); // 四捨五入で整数に
税込金額: 2178
このように、Math.round()を使えば、「小数点のないきれいな金額」にできます。実際のアプリやWebサイトでもよく使われる方法です。
7. どの関数を使えばいいの?選び方のポイント
- 少数を「切り捨てたい」→
Math.floor() - 少数を「切り上げたい」→
Math.ceil() - 「普通の四捨五入」をしたい →
Math.round()
使い分けのコツを覚えておけば、数値を扱うときにとても便利です。