round() 函数对浮点数进行四舍五入,可以指定小数位数和舍入模式。
round(float $num, int $precision = 0, int $mode = PHP_ROUND_HALF_UP): float
| 参数 | 描述 |
|---|---|
num |
必需。规定要舍入的值。 |
precision |
可选。规定小数位数(精度)。默认为 0,即舍入为整数。正数表示小数点后位数,负数表示对整数部分舍入(如 -1 舍入到十位)。 |
mode |
可选。规定舍入模式。可用常量:
|
返回舍入后的浮点数。
mode 参数)<?php
echo round(3.4) . "<br>"; // 3
echo round(3.5) . "<br>"; // 4
echo round(3.6) . "<br>"; // 4
echo round(3.6, 0) . "<br>"; // 4
?>
输出:
3
4
4
4
<?php
echo round(1.95583, 2) . "<br>"; // 1.96
echo round(1241757, -3) . "<br>"; // 1242000 (舍入到千位)
echo round(5.045, 2) . "<br>"; // 5.05 (注意浮点精度可能导致 5.04)
?>
输出:
1.96
1242000
5.05
<?php
echo "默认 (HALF_UP): " . round(1.5, 0, PHP_ROUND_HALF_UP) . "<br>"; // 2
echo "HALF_DOWN: " . round(1.5, 0, PHP_ROUND_HALF_DOWN) . "<br>"; // 1
echo "HALF_EVEN: " . round(1.5, 0, PHP_ROUND_HALF_EVEN) . "<br>"; // 2
echo "HALF_ODD: " . round(1.5, 0, PHP_ROUND_HALF_ODD) . "<br>"; // 1
echo "HALF_EVEN 对 2.5: " . round(2.5, 0, PHP_ROUND_HALF_EVEN) . "<br>"; // 2
?>
输出:
默认 (HALF_UP): 2
HALF_DOWN: 1
HALF_EVEN: 2
HALF_ODD: 1
HALF_EVEN 对 2.5: 2
<?php
function formatPrice($price) {
return '¥' . number_format(round($price, 2), 2);
}
echo formatPrice(19.995); // ¥20.00
?>
输出:
¥20.00
precision 为负数时,函数会对整数部分进行舍入,例如 round(1234, -2) 结果为 1200。PHP_ROUND_HALF_EVEN 和 PHP_ROUND_HALF_ODD 可以避免统计中的累积误差。