Round()函数不能简单的翻译为四舍五入。具体来说,我们从小学习的“四舍五入”是不科学的。国际通行的是 Banker 舍入法(Banker ‘s rounding,银行家舍入)算法,顾名思义,就是银行在计算时使用的规则,即“四舍六入五取偶”。就是说小于 4 或大于 6 的该舍该入是没有争议的,而5处在正中间,采取的原则是:如果舍入位为5,则舍入后最后一位为偶数。事实上这也是 IEEE 规定的舍入标准。因此所有符合 IEEE 标准的语言都应该是采用这一规则的。这就解释了为什么 2.5 舍入以后以后是 2,而 3.5 舍入以后是 4。
摘自PHP官方文档.http://php.net/manual/zh/function.round.php
(PHP 4, PHP 5, PHP 7)
round — 对浮点数进行四舍五入
说明
float round ( float $val [, int $precision = 0 [, int $mode = PHP_ROUND_HALF_UP ]] )
返回将 val 根据指定精度 precision(十进制小数点后数字的数目)进行四舍五入的结果。precision 也可以是负数或零(默认值)。
Note: PHP 默认不能正确处理类似 “12,300.2” 的字符串。见字符串转换为数值。
参数
val
要处理的值
precision
可选的十进制小数点后数字的数目。
mode
以下之一: PHP_ROUND_HALF_UP、 PHP_ROUND_HALF_DOWN PHP_ROUND_HALF_EVEN 或 PHP_ROUND_HALF_ODD
返回值
四舍五入后的值
round函数可以接受1-3个参数.其中第1个参数为浮点值,第2个参数为保留小数点后的位数,第3个参数为模式.其中第2和第3个参数为可选项.
Notice:round()函数不可以处理字符串类型,在处理前请转换为数值.
Notice:第2个参数不填写则默认为0,此时只返回四舍五入后的整数部分.
function test(){
echo 'round(9.5, 0, PHP_ROUND_HALF_UP)='.round(9.5, 0, PHP_ROUND_HALF_UP)."
"; // 10
echo 'round(9.5, 0, PHP_ROUND_HALF_DOWN)='.round(9.5, 0, PHP_ROUND_HALF_DOWN)."
"; // 9
echo 'round(9.5, 0, PHP_ROUND_HALF_EVEN)='.round(9.5, 0, PHP_ROUND_HALF_EVEN)."
"; // 10
echo 'round(9.5, 0, PHP_ROUND_HALF_ODD)='.round(9.5, 0, PHP_ROUND_HALF_ODD)."
"; // 9
echo 'round(8.5, 0, PHP_ROUND_HALF_UP)='.round(8.5, 0, PHP_ROUND_HALF_UP)."
"; // 9
echo 'round(8.5, 0, PHP_ROUND_HALF_DOWN)='.round(8.5, 0, PHP_ROUND_HALF_DOWN)."
"; // 8
echo 'round(8.5, 0, PHP_ROUND_HALF_EVEN)='.round(8.5, 0, PHP_ROUND_HALF_EVEN)."
"; // 8
echo 'round(8.5, 0, PHP_ROUND_HALF_ODD)='.round(8.5, 0, PHP_ROUND_HALF_ODD)."
"; // 9
}
1
2
3
4
5
6
7
8
9
10
11
functiontest(){
echo'round(9.5, 0, PHP_ROUND_HALF_UP)='.round(9.5,0,PHP_ROUND_HALF_UP)."
";// 10
echo'round(9.5, 0, PHP_ROUND_HALF_DOWN)='.round(9.5,0,PHP_ROUND_HALF_DOWN)."
";// 9
echo'round(9.5, 0, PHP_ROUND_HALF_EVEN)='.round(9.5,0,PHP_ROUND_HALF_EVEN)."
";// 10
echo'round(9.5, 0, PHP_ROUND_HALF_ODD)='.round(9.5,0,PHP_ROUND_HALF_ODD)."
";// 9
echo'round(8.5, 0, PHP_ROUND_HALF_UP)='.round(8.5,0,PHP_ROUND_HALF_UP)."
";// 9
echo'round(8.5, 0, PHP_ROUND_HALF_DOWN)='.round(8.5,0,PHP_ROUND_HALF_DOWN)."
";// 8
echo'round(8.5, 0, PHP_ROUND_HALF_EVEN)='.round(8.5,0,PHP_ROUND_HALF_EVEN)."
";// 8
echo'round(8.5, 0, PHP_ROUND_HALF_ODD)='.round(8.5,0,PHP_ROUND_HALF_ODD)."
";// 9
}
PHP_ROUND_HALF_UP: 该模式将进行四舍六入,遇5进1
PHP_ROUND_HALF_DOWN: 该模式将进行四舍六入,遇5不舍弃
PHP_ROUND_HALF_EVEN: 该模式将四舍六入,整数部分为奇数则进1
PHP_ROUND_HALF_ODD: 该模式将四舍六入,整数部分为偶数则进1