PHP中向下取整的最佳方法及箱装瓶数计算实现
PHP向下取整方法及实际场景应用
问题1:PHP中向下取整的最佳方法是什么?
PHP里有几种实现向下取整的方式,得根据你的数值类型和场景来选,其中最通用的最佳方案是**floor()函数**:
floor():这是专门为向下取整设计的函数,完全遵循数学定义——不管是正数还是负数,都会返回小于等于原数的最大整数。比如floor(8.333)返回8,floor(-8.333)返回-9,语义清晰,不会有歧义。- 整数强制转换/
intval():如果只处理正数,(int)8.333或者intval(8.333)也能得到8,但负数场景会「向零取整」(比如(int)-8.333返回-8),不符合向下取整的要求,所以只适合正数场景。
总结:如果要保证所有数值场景都正确实现向下取整,优先用floor();正数场景下用强制转整数或intval()也没问题,但可读性不如floor()。
问题2:计算整箱数与剩余瓶数(每箱12瓶)
这个场景刚好可以结合向下取整来解决,还要注意先把用户输入的字符串转成数值类型,具体步骤如下:
1. 计算整箱数
推荐用PHP7+新增的intdiv()函数,它专门做整数除法,直接返回商的整数部分(正数场景下等价于向下取整),代码更直观:
$bottles = "100"; $totalBottles = (int)$bottles; // 先将字符串转成整数 $fullCases = intdiv($totalBottles, 12); // 100/12=8.333,intdiv直接返回8
当然用floor($totalBottles / 12)也能得到同样结果,但intdiv()更贴合「整数除法求整箱数」的业务逻辑,可读性更高。
2. 计算剩余瓶数
用取模运算符%直接获取余数即可:
$remainingBottles = $totalBottles % 12; // 100%12=4,就是未装满的剩余瓶数
整合后的完整代码:
$bottles = "100"; $totalBottles = (int)$bottles; $fullCases = intdiv($totalBottles, 12); $remainingBottles = $totalBottles % 12; echo "整箱数:{$fullCases},剩余瓶数:{$remainingBottles}"; // 输出:整箱数:8,剩余瓶数:4
提醒:一定要先把用户输入的字符串转成整数,避免字符串运算导致的意外问题。
内容的提问来源于stack exchange,提问作者Jamie Warren
相关产品推荐
相关产品推荐

