php四舍五入取整时如何保留小数位数?

发布时间:2020-01-31编辑:脚本学堂
本文介绍了php四舍五入取整的多种方法,php四舍五入时如何保留小数位数,常用的取整函数与方法。

php编程中,经常会遇到小数四舍五入取整及保留N位等问题,以及PHP5.3后round函数的使用。

专题推荐:php四舍五入

php对小数取整的例子:
php保留两位小数并且四舍五入
 

$n=0.1265489;
echo sprintf("%.2f", $n); // 0.13

以上用到了sprintf函数对$n进行了格式化%.2f是目标格式,其中2表示两位f表示float(浮点型) 第3为小数6被四舍五入。

例子:
 

$n=0.1265489
echo substr(sprintf("%.3",$n),0,-1);// 0.12

代码输出了保留2为小数没有四舍五入,实际上sprintf会四舍五入小数后多保留了一位,然后用substr来截取前2位。

取整例子:
 

echo ceil(4.1);    // 5
echo ceil(9.999);  // 10
 

ceil函数是向上取整函数,如果超出一点点那就向前进一位如例子中4.1就变成了5。

跟它相反还有一个函数叫floor,例子:
 

echo floor(4.1);   // 4
echo floor(9.999); // 9

floor的特性在第二个输出中显的特别明显,无论有多少位小数哪怕是无限接近10也没有用向下取到的整数就是9。

来自php手册中round函数的例子:
 

复制代码 代码示例:
<?PHP
 echo round(3.4);         // 3
 echo round(3.5);         // 4
 echo round(3.6);         // 4
 echo round(3.6, 0);      // 4
 echo round(1.95583, 2);  // 1.96
 echo round(1241757, -3); // 1242000
 echo round(5.045, 2);    // 5.05
 echo round(5.055, 2);    // 5.06
?>

php手册中关于round函数的解释:
float round ( float $val [, int $precision = 0 [, int $mode = PHP_ROUND_HALF_UP ]] )
返回将 val 根据指定精度 precision(十进制小数点后数字的数目)进行四舍五入的结果。
precision 也可以是负数或零(默认值)。
round 的参数一是数据源,参数二是要保留的小数位而且之后一位(比如你输入2那么第3为是之后一位)被四舍五入,当他是负数的时候,从数据源最后一位开始往前数相应的长度制0并将最后一位四舍五入比如 round(123456,-2) 就是123456从6开始往前数两位都变成零,并且最后一位5(从后往前数第一位是6最后一位是5)被四舍五入,输出123500。