php7采坑记:浮点型数据比较

    今天在项目中遇到一个奇怪的问题,经过计算后的double类型的变量的值相等的两个变量进行比较,结果却是不相等。

<?php
$a=42735.04;
$b=17806.2;


$c=$a/36;
$c=round($c,2);

$d=$c*15;


echo '$b value is: '. $b ."\n";
echo '$d value is: '. $d ."\n";

if($b == $d){
    echo "ok\n";
}else{
    echo "sorry\n";
}

得到结果如下图,明明两个变量的值是一样的,做’==’比较运算却返回false

php7采坑记:浮点型数据比较

原因是php7中的浮点数 经过 /,*,round()等一系列运算后,精度发生了变化。

解决方案:将任意精度的变量作为字符串进行比较。

php7中已经提供较好的解决方案.

(PHP 4, PHP 5, PHP 7)
bccomp — 比较两个任意精度的数字
说明
int bccomp( string $left_operand, string $right_operand[, int $scale = int
  ] )
把right_operand和left_operand作比较, 并且返回一个整数的结果.

最终使用bccomp()来进行比较解决问题

if(bccomp((string)$b,(string)$d,2) === 0){

    echo "yes \n";
}else{
    echo "no \n";
}

原创文章,作者:NLNPK,如若转载,请注明出处:http://www.wangzhanshi.com/n/6903.html

(0)
NLNPK的头像NLNPK
上一篇 2025年1月1日 16:37:57
下一篇 2025年1月1日 16:37:59

相关推荐

  • php7增加了哪些新特性

    1.类型的声明。 可以使用字符串(string), 整数 (int), 浮点数 (float), 以及布尔值 (bool),来声明函数的参数类型与函数返回值。 declare(st…

    php 2025年1月1日
  • php7和hvvm有什么区别

    PHP7和HHVM解析PHP代码的方式不同:PHP7使用标准的PHP解析器,生成HTML代码,然后发送给客户端,客户端显示出用户期望的内容;HHVM首先把PHP代码转化为HipHo…

    php 2025年1月1日
  • php7以上版本的php-fpm参数配置

    如果php-fpm的这几个参数设置不当了,会导致php-fpm启动不了,nginx站点不能解析php文件,报404错误。 相关命令: centos7+,启动php-fpm: sys…

    php 2025年1月1日
  • PHP7中新添加的特性有哪些

    php有什么用 php是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法混合了C、Java、Perl以及php自创新的语法,主要用来做网站开发,许多小型网站都用php开发,因…

    php 2025年1月1日
  • PHP7+Swoole/Nginx/Golang性能对比案例

    QPS对比 使用apache bench工具对Nginx静态页、Golang Http程序、PHP7+Swoole Http程序进行压力测试。在同一台机器上,进行并发100共100…

    php 2025年1月1日
  • 使用PHP和RabbitMQ实现消息队列的延迟功能

    前言 今天我们来做个小试验,用PHP和RabbitMQ实现消息队列的延迟功能。 前期准备,需要安装好docker、docker-compose的运行环境。 需要安装RabbitMQ…

    2024年12月17日
  • PHP 7.x 各个版本的新特性有哪些

    php有什么用 php是一个嵌套的缩写名称,指的是英文超级文本预处理语言(php:Hypertext Preprocessor)的缩写,它的语法混合了C、Java、Perl以及ph…

    php 2025年1月1日
  • 一文精通php多版本管理工具phpbrew使用教程

    phpbrew构建和安装多个 PHP 版本 phpbrew 是一个工具,可以在 $HOME 目录中构建和安装多个 PHP 版本。 phpbrew 的功能包括 将配置选项简化为变体,…

    2024年12月17日
  • 通过PPA在Ubuntu上安装PHP的方法

    在Ubuntu上安装php 7.3 php 7.2稳定版本已经发布。使用以下命令在Ubuntu系统中为php7.2启用ppa并安装它。 $ sudo apt-get install…

    php 2025年1月1日
  • Netbeans8.2如何支持PHP7

    首先,将PHP项目的PHP版本设置为PHP 7.0。 PHP 7其中一项新特性是返回类型声明,即PHP的函数和方法可以声明指定类型的返回值: PHP 7的另一项精彩的改进就是参数的…

    2025年1月1日

发表回复

登录后才能评论