比较float 0到0 - php

时间:2018-04-13 15:42:50

标签: 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
}

2 个答案:

答案 0 :(得分:0)

===检查值(0& 0)和type(int& float)是否相等。 在这种情况下,他们不是。

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

答案 1 :(得分:0)

else部分为true因为int(0)float(0)在您尝试===时不相等,if部分将是如果您尝试使用==,则为true。通过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
}
?>