PHP intval vs floor


PHP intval vs floor

floor()intval()有什么区别吗?尽管两者返回相同的结果,但在性能方面是否存在任何问题?两者中哪一个更快?如果我只想返回小数的整个值,那么使用哪个 php 函数是正确的?

此处的目标是显示 1999.99 到 1999,省略十进制值,仅返回整数。

$num = 1999.99;
$formattedNum = number_format($num)."<br>";
echo intval($num) . ' intval' . '<br />';
echo floor($num) . ' floor';

这些函数给出负分数的不同结果。

echo floor(-0.1); // -1
echo intval(-0.1); // 0

最快的方法是使用类型转换:(int)$num

根据文档,

floor() 的返回值仍然是浮点型,因为浮点数的值范围通常大于整数的值范围。

但是,Intval()返回一个 int。

$v = 1999.99;
var_dump(
  intval($v),
  floor($v)
);

输出:

int(1999)
float(1999)

文档:


http://php.net/manual/en/function.intval.phphttp://php.net/manual/en/function.floor.php

$ratio_x = (0.70/100);
$computation =  $ratio_x * 8000;
$noDeci = floor(($ratio_x * 8000)*1)/1;
$intval = intval(($ratio_x * 8000)*1)/1;
$noDeci_hc = floor((int)56*1)/1;
echo $computation."|".$noDeci."|".$noDeci_hc."|".$intval;

输出:56|55|56|55

$noDeci返回 55???