
本文介绍在 php 中将整数向下舍入到百位(即保留前两位有效数字、后两位归零)的简洁方法,核心思路是先除以 100 取整,再乘以 100 还原,适用于任意非负整数,无需转换为浮点数即可精准截断。
在 PHP 中,“向下舍入到第二位”若指整数场景下的百位截断(例如 12250 → 12200),本质并非小数点后第二位,而是对整数按 100 的整数倍向下取整(即 floor to nearest hundred)。这与 floor() 直接作用于浮点数不同——它不适用于整数本身,但可通过数学变换高效实现。
核心原理如下:
- 将原数除以 100,使其“缩放”至个位级(如 12250 / 100 = 122.5);
- 对结果调用 floor() 向下取整(floor(122.5) = 122);
- 再乘以 100 “放大”回原始量级(122 × 100 = 12200)。
该方法简洁、高效、无精度损失,且完全基于整数运算逻辑(PHP 会自动处理类型转换):
$number = 12250; $result = floor($number / 100) * 100; echo $result; // 输出:12200 // 更多示例 var_dump(floor(999 / 100) * 100); // 900 var_dump(floor(100 / 100) * 100); // 100 var_dump(floor(50 / 100) * 100); // 0
✅ 适用性说明:
立即学习“PHP免费学习笔记(深入)”;
- 支持所有非负整数;若需支持负数(如 -12250 → -12300,因向下取整在负数中含义不同),应改用 intdiv() 配合条件判断,或明确业务需求是否需向零截断(intval($n / 100) * 100);
- 不依赖 BCMath 或字符串操作,性能优异;
- 无需强制类型转换(如 (int)),floor() 返回 float,但乘法后结果在整数范围内时,PHP 通常以整数形式输出(实际类型为 float,但不影响使用)。
⚠️ 注意事项:
- 此方法不是四舍五入,而是严格向下取整(floor)——12201 也会变为 12200,12299 同样变为 12200;
- 若目标是“保留两位有效数字”(如 12250 → 12000),则需调整为 floor($n / 1000) * 1000;请根据实际位数需求替换除数/乘数(100 对应百位,1000 对应千位,依此类推);
- 在高精度金融计算等场景,建议结合 intdiv()(PHP 7+)避免浮点隐式转换:intdiv($n, 100) * 100(仅当 $n 非负且可被整除时语义完全一致,更安全)。
总结:通过 floor($n / 100) * 100 实现百位向下舍入,是 PHP 中最直接、可读性强且工程友好的解决方案。理解其缩放—取整—还原三步逻辑,可轻松适配任意整数位数的向下截断需求。











