小编典典

比较 php 中的浮点数

all

我想比较 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 中的浮点数吗?

如果是,请帮我解决这个问题。

还是我的服务器配置有问题?


阅读 62

收藏
2022-08-05

共1个答案

小编典典

如果你这样做,它们 应该 是一样的。但请注意,浮点值的一个特点是 看似
得出相同值的计算实际上并不需要完全相同。因此,如果$a是文字.17$b通过计算到达那里,则很可能它们是不同的,尽管它们都显示相同的值。

通常你永远不会像这样比较浮点值的相等性,你需要使用最小的可接受的差异:

if (abs(($a-$b)/$b) < 0.00001) {
  echo "same";
}

类似的东西。

2022-08-05