PHP intval与floor的区别

11

floor()intval()有什么区别?虽然两者的结果相同,但在性能方面是否存在问题?这两者哪个更快?如果我只想返回一个十进制数的整数部分,应该使用哪个php函数?

这里的目标是将1999.99显示为1999,省略小数值并仅返回整数部分。

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

1
不同的结果:var_dump( intval($num) ); var_dump( floor($num) ); 还要检查 var_dump( intval(-$num) ); var_dump( floor(-$num) ); - AbraCadaver
1
intval() 函数会丢弃小数部分并返回整数。floor() 函数会向下取整并返回浮点数。 - Sammitch
5个回答

21

这些函数在处理负分数时会得出不同的结果。

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

现在我明白了区别。似乎在处理负数时,浮点数会四舍五入,而intval会提取整数(这正是我想要显示的)。 - basagabi
1
@basagabi floor()函数不会四舍五入,它返回给定值小于等于的最近整数。 - Ahmed Shefeer

6

5
根据文档,floor()函数的返回值仍然是float类型,因为float类型的值范围通常比integer类型更大。 不过,intval()函数的返回值是一个整数。

0

-1
$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???


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接