章: 第1章: 文法の土台
「合計金額が1円ずれる」——原因は演算の順序や切り捨て処理かもしれません
ECサイトや料金計算システムで、端数処理を間違えると請求金額がずれるバグが発生します。四則演算だけでなく、切り捨て・切り上げ・剰余の使い方を正しく理解することが、金額系の品質に直結します。
まずコードを動かしてみる
<?php
$price = 980;
$tax = floor($price * 0.1);
echo $price + $tax;
floor() で小数を切り捨てています。切り上げなら ceil()、四捨五入なら round() を使います。
演算子と丸め関数の比較
| 演算子/関数 | 役割 | 例 |
+ - * / |
四則演算 | 10 / 3 → 3.333... |
% |
剰余(余り) | 10 % 3 → 1 |
** |
べき乗 | 2 ** 8 → 256 |
floor($n) |
切り捨て | floor(98.7) → 98 |
ceil($n) |
切り上げ | ceil(98.1) → 99 |
round($n) |
四捨五入 | round(98.5) → 99 |
abs($n) |
絶対値 | abs(-5) → 5 |
悪い例(丸め処理なしで計算)
<?php
$price = 980;
echo $price * 1.1; // 1078.0 — 小数が残る可能性がある
良い例(明示的に丸める)
<?php
$price = 980;
$total = (int)floor($price * 1.1); // 1078 — 意図が明確
echo $total;
チェックポイント: 金額計算では必ず丸め処理(
floor/ceil/round)を明示しましょう。どの丸め方をするかはビジネスルール次第なので、要件を確認してから実装します。
まとめ & 次のステップ
- 四則演算は
+-*/、剰余は%、べき乗は** - 切り捨ては
floor()、切り上げはceil()、四捨五入はround() - 金額計算では丸め方をビジネスルールに合わせて選ぶ
- 整数除算は自動的に float になるので
(int)でキャストするとよい abs()で負の値を絶対値に変換できる
次回は 比較演算子を学びます。== と === の違いを理解すると、型絡みのバグが一気に減ります。