比较浮点数 0 和 0 - PHP

  • 本文关键字:PHP 比较 浮点数 php
  • 更新时间 :
  • 英文 :


在下面的代码中,我希望if条件为真,但实际上else条件为真。谁能解释一下背后的原因?

$a = (float) 0;
$b = 0;
if ($b === $a) {
    echo "$a and $b are equal";
}
else{
    echo "$a and $b are not equal";  // true
}

else部分是true的,因为当你尝试使用===int(0)float(0)不相等,如果你尝试使用==if部分将为真。使用var_dump($a)var_dump($b)查看其数据类型

===不仅比较相等,而且还确保条目的类型相同

<?php
$a = (float) 0;
$b = 0;
var_dump($a);
var_dump($b);
if($b === $a){
    echo "$a and $b are equal";
}else{
    echo "$a and $b are not equal";  // true
}
?>

> === 检查值(0 & 0(和类型(int & float(是否相等。在这种情况下,它们不是。

如果您只想检查值而不检查类型,请使用 ==

最新更新