我想比较 PHP 中的两个浮点数,就像在这个示例代码中一样:
$a = 0.17; $b = 1 - 0.83; //0.17 if($a == $b ){ echo 'a and b are same'; } else { echo 'a and b are not same'; }
在此代码中,它返回条件的结果else而不是if条件,即使$a和$b相同。有什么特殊的方法来处理/比较 PHP 中的浮点数吗?
else
if
$a
$b
如果是,请帮我解决这个问题。
还是我的服务器配置有问题?
如果你这样做,它们 应该 是一样的。但请注意,浮点值的一个特点是 看似 得出相同值的计算实际上并不需要完全相同。因此,如果$a是文字.17并$b通过计算到达那里,则很可能它们是不同的,尽管它们都显示相同的值。
.17
通常你永远不会像这样比较浮点值的相等性,你需要使用最小的可接受的差异:
if (abs(($a-$b)/$b) < 0.00001) { echo "same"; }
类似的东西。