PHP中如何实现整型四舍五入,round函数用法详解?
- 内容介绍
- 文章标签
- 相关推荐
本文共计842个文字,预计阅读时间需要4分钟。
不是默认不是,而是它确实是以四舍五入——但只对正数看来像你熟悉的四舍五入。负数时,它用的是五舍六入的方法,即向偶数舍入。例如:
如果你要严格数学意义上的「正负都向上/向下/四舍五入到最近整数」,不能只靠默认行为。
-
round($x):默认精度 0,但遵循银行家舍入,不等于小学数学四舍五入 - 要强制传统四舍五入(即 0.5 永远进 1),得显式指定模式:
round($x, 0, PHP_ROUND_HALF_UP) -
PHP_ROUND_HALF_UP是 PHP 5.3+ 才有的常量,老环境需自己模拟
为什么 round(1.5) 有时返回 2,有时返回 1?
这通常不是 round() 本身的问题,而是浮点数精度导致的输入失真。比如 0.1 + 0.2 不等于 0.3,而是 0.30000000000000004。当你对类似 1.5 - 1e-16 这种「看起来是 1.5 实际略小」的数调用 round(),它就进了「舍」的分支。
本文共计842个文字,预计阅读时间需要4分钟。
不是默认不是,而是它确实是以四舍五入——但只对正数看来像你熟悉的四舍五入。负数时,它用的是五舍六入的方法,即向偶数舍入。例如:
如果你要严格数学意义上的「正负都向上/向下/四舍五入到最近整数」,不能只靠默认行为。
-
round($x):默认精度 0,但遵循银行家舍入,不等于小学数学四舍五入 - 要强制传统四舍五入(即 0.5 永远进 1),得显式指定模式:
round($x, 0, PHP_ROUND_HALF_UP) -
PHP_ROUND_HALF_UP是 PHP 5.3+ 才有的常量,老环境需自己模拟
为什么 round(1.5) 有时返回 2,有时返回 1?
这通常不是 round() 本身的问题,而是浮点数精度导致的输入失真。比如 0.1 + 0.2 不等于 0.3,而是 0.30000000000000004。当你对类似 1.5 - 1e-16 这种「看起来是 1.5 实际略小」的数调用 round(),它就进了「舍」的分支。

