PHP四种取整的方法:通过函数及运算符实现

最后更新于 2023-05-26 1132 次阅读


PHP对小数进行取整,有以下四种方法:

  • intval() 舍弃小数,只保留整数位
  • round() 四舍五入进行取整
  • ceil() 向上取整,有小数位就加一 返回不小于当前数的下一个整数
  • floor() 向下取整,有小数位就减一 返回不大于当前数的下一个整数

对于intval()函数:

$n=3.1415926;
$n1=5.666666;
echo intval($n);
echo intval($n1);
//3 5

实际上就等同于:

$n=3.1415926;
echo (int)$a;

如果通过运算符实现:

echo $a-($a-(int)$a);

对于两个浮点数相减后的结果如果没有小数位,PHP会自动对其取整。

round()四舍五入:

$n=1.885;
$n1=3.356;
echo round($n);
echo round($n1);
//2 3

四舍五入通过运算符来实现:

function myRound($n){

$n=($n-(int)$n)>=0.5 ? $n-($n-(int)$n)+1 : $n-($n-(int)$n);

}

echo myRound(5.56);

echo myRound(15.12);

//6 15

ceil() 向上取整:

$n=5.66;
$n1=96.23;
echo ceil($n);
echo ceil($n1);
//6 97

通过运算符实现:

function myCeil($n){
    $n=$n-(int)$n<>0 ? (int)$n+1 : $n;
    echo $n;
}
echo myCeil(3.00000001);
//4

floor() 向下取整:

$n=3.000;
$n1=5.00000001;
echo floor($n);
echo floor($n1);
//3 5

通过运算符实现:

function myFloor($n){
    $n=(int)$n-($n-(int)$n);
    return $n;
}
echo myFloor(15.0000);
echo myFloor(152.366);
//15 152