热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

今天在项目中遇到一个奇怪的问题,经过计算后的double类型的变量的值相等的两个变量进行比较,结果却是不相等。<?php$a42735.04;$b17806.2;$c$

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


$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

wKioL1lnLTOCGkbJAAAoYDhHs7w497.jpg




原因是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";}



本文出自 “我的PHP之路” 博客,请务必保留此出处http://phpme.blog.51cto.com/663593/1947237


推荐阅读
  • 这篇文章将为大家详细讲解有关PHP7+Nginx如何配置与安装,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。系统环境 ... [详细]
  • 小编给大家分享一下apache如何支持php7,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面 ... [详细]
  • PHP7留言板开发之列表搜索的实现方法
    小编给大家分享一下PHP7留言板开发之列表搜索的实现方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!1.当数据量上来的时候, ... [详细]
  • Ubuntu系统安装php7的步骤
    这期内容当中小编将会给大家带来有关Ubuntu系统安装php7的步骤,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。U ... [详细]
  • php7为什么快?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。本质上来说就 ... [详细]
  • 这篇文章主要讲解了“如何使用php7新增功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如 ... [详细]
  • 如何在php7中使用yar生成一个docker镜像?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人 ... [详细]
  • 这篇文章将为大家详细讲解有关PHP7中的新特性有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的 ... [详细]
  • PHP7中哪10件事不要做
    今天就跟大家聊聊有关PHP7中哪10件事不要做,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根 ... [详细]
  • PHP7新特性详细汇总
    今天小编就为大家带来一篇PHP7新特性详细汇总的文章。小编觉得挺不错的,为此分享给大家做个参考。一起跟随小编过来看看吧。PHP7增加了许多特性 ... [详细]
  • 本篇文章为大家展示了echo和print语句怎么在PHP7中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 ... [详细]
  • mysqli扩展无法在PHP7下升级怎么办
    这篇文章将为大家详细讲解有关mysqli扩展无法在PHP7下升级怎么办,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有 ... [详细]
  • 这篇文章主要介绍了PHP7代码加密扩展有什么特点,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带 ... [详细]
  • 一、安装前的准备1、卸掉之前的本地环境(php、Apache、mysql),如果本地默认开启了IIS服务,需将IIS服务关闭(端口占用),虽然可以改Apache服务端口,但是访问时 ... [详细]
  • php7安装指南(windows)之apache的安装方法
    这篇文章给大家分享的是有关php7安装指南(windows)之apache的安装方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看 ... [详细]
author-avatar
高--洁
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有