$nt=(float) number_format("26031.87",2,".",""); // 26031.87
$nt2=(float) 546669.02-520637.15; // 26031.87
if($nt>$nt2)
echo "$nt / $nt2 ⇽ What's wrong with this!? :@";
关键是为什么会发生这种情况?如果直观看起来相同,一个粗略的解决方案是将number_format()做到$ nt2,但是......为什么?
更新:: $ nt- $ nt2输出3.6379788070917E-12
答案 0 :(得分:2)
Per Zend:
在比较两个浮点数时,PHP似乎没有逻辑性,这是由于数字的内部表示。解决方案绝对不会比较浮点数是否相等!
在比较它们之前将它们转换为INT或使用bc_math。
答案 1 :(得分:2)
http://php.net/manual/en/language.types.float.php看到那个大红色警告横幅。 :)
比较花车你可以使用:
if (abs($nt1-$nt2) < 0.00001) {
echo "Equal!";
}
(将0.00001
更改为您需要的比较精度。