我想比较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中有没有什么特殊的方法来处理/比较浮点数?

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

或者我的服务器配置有问题吗?

推荐答案

如果你这样做,它们should是一样的.但是请注意,浮点值的一个特征是哪个seem产生相同的值的计算实际上不需要是相同的.因此,如果$a是文字.17,而$b通过计算到达那里,那么它们很可能是不同的,尽管两者显示的值是相同的.

通常情况下,您不会像这样比较浮点值是否相等,您需要使用最小的可接受差异:

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

差不多吧.

Php相关问答推荐

根据类别在WooCommerce中添加库存数量后缀

如何隐藏x轴图表上的值

PHP -多维数组到一维数组

在laravel 9或10 php中向中间件响应添加自定义数据

针对给定产品类别的WooCommerce计数审核

使用HPOS过滤WooCommerce中的订单列表

在WooCommerce Admin产品列表自定义列中显示来自元数据的统计数据

如何批量处理消息总线中的消息

Wordpress,配置一周第一天选项

从 XAMPP 运行 shell 脚本时,意外标记(附近出现语法错误

单个产品页面 WooCommerce 订阅价格字符串的更改

Docker-用于部署的 PHP 应用程序映像无法在本地运行

如何在 PHP laravel 中将图像的透明背景转换为白色?

如果有很多重定向,PHP curl 的行为不像命令行 curl

适当的时区处理 Laravel / Carbon

如何在 WooCommerce 中显示每个自定义选项卡的内容

如何在光速网络服务器中使用 apache ..htaccess

WooCommerce 按 ID 限制产品

PHP Remedy API 调用以创建附件无效的条目(使用 Postman Works!)

如何在 Laravel 中验证多个输入?