
本文介绍如何在 php 中对整数进行“向下舍入到百位”(即保留前两位有效数字,末两位归零),适用于金额截断、统计分组等场景,核心思路是先缩放再取整后还原。
在 PHP 中,floor() 函数默认作用于浮点数,但通过简单的数学缩放(scale-down → floor → scale-up),我们可轻松将其扩展至任意整数位数的向下舍入。例如,将 12250 向下舍入到百位(即“第二位十进制位”,指从右往左第 2 位,对应 10² = 100),目标结果为 12200,而非四舍五入后的 12300。
该方法本质是整数截断(truncation toward zero for positive numbers),不依赖字符串操作或类型转换,高效且可读性强:
$number = 12250; $result = floor($number / 100) * 100; // 输出:12200
✅ 原理说明:
- $number / 100 将数值缩小 100 倍 → 122.5
- floor() 向下取整 → 122.0
- 再乘以 100 恢复量级 → 12200
⚠️ 注意事项:
立即学习“PHP免费学习笔记(深入)”;
- 该方法对正数完全可靠;若需支持负数(如 -12250 → -12300,因 floor(-122.5) === -123),应改用 intdiv() 配合条件判断,或使用 floor($number / $base) * $base 并明确业务语义(向下舍入在负数中含义可能不同);
- 若需动态控制舍入位数(如十位、千位),可封装为函数:
function roundDownToPlace($number, $places = 2) {
$base = pow(10, $places); // $places=2 → base=100
return floor($number / $base) * $base;
}
echo roundDownToPlace(12250, 2); // 12200
echo roundDownToPlace(9876, 1); // 9870 (舍入到十位)
echo roundDownToPlace(54321, 3); // 54000 (舍入到千位)? 总结:PHP 虽无原生 roundDown() 整数版函数,但借助 floor() 与幂运算缩放,即可简洁、高效、可复用地实现任意位数的向下舍入。该模式稳定、无精度陷阱(整数除法在 PHP 7.2+ 中自动转 float,但 floor() 可安全处理),推荐在金融计算、数据聚合等需确定性截断的场景中优先采用。











