我想比较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条件。有没有什么特殊的方法来处理/比较PHP中的浮点数?$a``$b
else
if
$a``$b
如果是,那么请帮助我解决此问题。
还是我的服务器配置有问题?
如果您这样做,它们 应该 是相同的。但是请注意,浮点值的一个特征是 看起来 可以导致相同值的计算实际上不必相同。因此,如果$a是一个文字.17并$b通过计算到达该文字,则尽管它们都显示相同的值,但很可能它们是不同的。
$a
.17
$b
通常,您永远不会像这样比较相等的浮点值,您需要使用可接受的最小差异:
if (abs(($a-$b)/$b) < 0.00001) { echo "same"; }
这样的事情。