ceil() 是 PHP8.0 向上取整函数,返回≥参数的最小 float 值;负数向零进位(如 ceil(-3.7)=-3);需缩放实现小数位取整;常用于分页、计费及倍数取整;注意类型校验与浮点精度问题。

ceil() 是 PHP8.0 中内置的数学函数,作用是向上取整:返回大于或等于参数的最小整数(以 float 类型返回)。
它不关心小数位数多少,只看数值是否为整数。只要带小数,就往正无穷方向进一位;负数则向零方向“进”(比如 ceil(-3.7) 得 -3,因为 -3 > -3.7)。
✅ 基本用法
echo ceil(4.1); // 输出 5 echo ceil(4.9); // 输出 5 echo ceil(4.0); // 输出 4 echo ceil(-2.1); // 输出 -2 echo ceil(-2.9); // 输出 -2
注意:返回值始终是 float 类型(即使结果是整数),例如 ceil(5) 返回的是 5.0,不是 int。
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
✅ 向上取整到指定位数(如十分位、百分位)
PHP 原生 ceil() 只对整数单位生效,要实现「向上取整到小数点后一位」,需缩放:
立即学习“PHP免费学习笔记(深入)”;
- 乘以 10 →
ceil()→ 再除以 10 - 然后用
number_format()或sprintf()补零显示
function roundUpToTenth($n) {
if (!is_numeric($n)) return false;
$val = ceil($n * 10) / 10;
return sprintf('%.2f', $val); // 强制保留两位小数,如 51.2 → "51.20"
}
echo roundUpToTenth(51.2); // "51.20"
echo roundUpToTenth(51.21); // "51.30"
echo roundUpToTenth(51.201); // "51.30"✅ 常见使用场景
-
分页总页数计算:
$pages = ceil($total / $per_page); -
运费/计费规则:不足 1 元按 1 元计,用
ceil($price) -
向上取整到指定倍数(如 5 的倍数):
ceil($n / 5) * 5
echo ceil(12 / 5) * 5; // 15 echo ceil(21 / 10) * 10; // 30
⚠️ 注意事项
-
ceil(null)、ceil('abc')会触发警告,建议先用is_numeric()校验 - PHP8.0 起,
ceil()不再接受实现了__toString()的对象(会报TypeError) - 浮点数精度问题可能导致意外结果(如
ceil(1.1 + 2.2)不一定等于ceil(3.3)),必要时用bcadd()配合处理
不复杂但容易忽略。


















