在PHP程序里,浮点数运算后往往得到一个带小数的值,但业务上经常只需要整数。PHP自带的ceil和floor函数分别用于向上和向下取整,掌握它们可以避免四舍五入带来的误差。

一、ceil函数向上取整
ceil函数的作用是返回不小于传入值的最小整数。也就是说,只要有小数部分,结果就进一位。
<?php // ceil向上取整示例 $num1 = 3.2; $num2 = -2.7; echo ceil($num1); // 输出 4 echo "n"; echo ceil($num2); // 输出 -2 ?>
从代码可以看出,正数3.2向上取整为4,负数-2.7向上取整为-2,因为-2大于-2.7且是最小整数。
二、floor函数向下取整
floor函数返回不大于传入值的最大整数,即直接舍弃小数部分向下取。
<?php // floor向下取整示例 $num1 = 3.8; $num2 = -2.1; echo floor($num1); // 输出 3 echo "n"; echo floor($num2); // 输出 -3 ?>
这里3.8向下取整得3,-2.1向下取整得-3,符合向下靠拢的规则。
三、ceil与floor的区别对比
两者方向相反,选择时看业务需求。例如计算分页总数要用ceil,而扣减库存下限可用floor。
| 函数 | 方向 | 3.1结果 | -3.1结果 |
|---|---|---|---|
| ceil | 向上 | 4 | -3 |
| floor | 向下 | 3 | -4 |
使用注意点
- 两个函数都返回浮点类型的整数值,如需严格整数可用intval转换。
- 对超大浮点数可能存在精度限制,建议先确认数值范围。
- 不要和round函数混淆,round是四舍五入,而ceil和floor无四舍逻辑。
简单应用示例
假设每页显示10条,总记录43条,页数计算方式如下:
<?php $total = 43; $pageSize = 10; $pages = ceil($total / $pageSize); // 得到 5 页 echo $pages; ?>
通过上述示例可以看到,ceil和floor在PHP数学运算取整中非常实用,按场景选用即可。