PHP 中實現四捨五入最常用的三種方法分別是 round()、number_format() 與 sprintf()。三者在精度控制、輸出格式、區域化支持上各有優勢,本文通過實例對比助您選型。
$number = 1234.5678;
echo round($number, 2); // 1234.57
round(1234, -2) => 1200)。mode 參數控制半值進位策略(PHP_ROUND_HALF_UP 等)。$number = 1234.5678;
// 英式格式(小數點、無千分位)
$en = number_format($number, 2, '.', ''); // "1234.57"
// 法式格式(逗號小數點、空格千分位)
$fr = number_format($number, 2, ',', ' '); // "1 234,57"
// 完整參數:number_format(float $num, int $decimals, string $decPoint, string $thousandsSep)
$name = '張三'; $money = 123.1;
$formatted = sprintf("%s有¥%01.2f。", $name, $money);
// 張三有¥123.10。
%f 固定小數點,.2 保留兩位,01 整數部分至少 1 位(不足補 0)。vsprintf() 接受參數陣列。| 場景 | 推薦函數 | 理由 |
|---|---|---|
| 純數值計算、後續仍需參與運算 | round() | 返回數值類型,精度可控 |
| 前端直接展示、需千分位/多語言格式 | number_format() | 字符串輸出,區域化參數豐富 |
| 嵌入模板字符串、構建複雜輸出格式 | sprintf() | 模板化,可同時格式化多個變量 |
注意:浮點數精度問題在三者中均存在(如 round(2.675, 2) => 2.67),涉及金融計算請使用 BCMath 或整數分位運算。