PHP下的浮点运算不准的解决方法


Posted in PHP onOctober 27, 2016

最近在做一个?的相加减问题是,出现了浮点运算不准的情况,看来都说解释型语言对于浮点运算都会有问题的说法是真的。

首先看一段代码:

<?php
$a = 0.1;
$b = 0.7;
var_dump(($a + $b) == 0.8);

打印出来的值居然为 boolean false

这是为啥?PHP手册对于浮点数有以下警告信息:

Warning

浮点数精度

显然简单的十进制分数如同 0.1 或 0.7 不能在不丢失一点点精度的情况下转换为内部二进制的格式。这就会造成混乱的结果:例如,floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9999999999...。

这和一个事实有关,那就是不可能精确的用有限位数表达某些十进制分数。例如,十进制的 1/3 变成了 0.3333333. . .。

所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数

那么上面的算式我们应该改写为<?php$a = 0.1;$b = 0.7;var_dump(bcadd($a,$b,2) == 0.8);这样就能解决浮点数的计算问题了

以上就是小编为大家带来的PHP下的浮点运算不准的解决方法全部内容了,希望大家多多支持三水点靠木~

PHP 相关文章推荐
phpBB BBcode处理的漏洞
Oct 09 PHP
珊瑚虫IP库浅析
Feb 15 PHP
FCKeditor添加自定义按钮
Mar 27 PHP
PHP源码之 ext/mysql扩展部分
Jul 17 PHP
php中模拟POST传递数据的两种方法分享
Sep 16 PHP
php curl选项列表(超详细)
Jul 01 PHP
PHP生成迅雷、快车、旋风等软件的下载链接代码实例
May 12 PHP
Yii实现自动加载类地图的方法
Apr 01 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
Dec 02 PHP
详解Yii2.0使用AR联表查询实例
Jun 16 PHP
PHP基于swoole多进程操作示例
Aug 12 PHP
thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例
Oct 10 PHP
php函数mkdir实现递归创建层级目录
Oct 27 #PHP
PHP实现递归目录的5种方法
Oct 27 #PHP
PHP读取大文件的几种方法介绍
Oct 27 #PHP
php array_multisort 对数组进行排序详解及实例代码
Oct 27 #PHP
PHP中的密码加密的解决方案总结
Oct 26 #PHP
php 解析xml 的四种方法详细介绍
Oct 26 #PHP
PHP 以POST方式提交XML、获取XML,解析XML详解及实例
Oct 26 #PHP
You might like
php Smarty date_format [格式化时间日期]
2010/03/15 PHP
php一个解析字符串排列数组的方法
2015/05/12 PHP
PHP在线书签系统分享
2016/01/04 PHP
JQuery与Ajax常用代码实现对比
2009/10/03 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
2011/12/31 Javascript
jQuery动态添加、删除元素的方法
2014/01/09 Javascript
JS实现单行文字不间断向上滚动的方法
2015/01/29 Javascript
基于ajax实现文件上传并显示进度条
2015/08/03 Javascript
jQuery+ajax简单实现文件上传的方法
2016/06/03 Javascript
JS &amp; JQuery 动态添加 select option
2016/06/08 Javascript
jQuery操作json常用方法示例
2017/01/04 Javascript
Easyui笔记2:实现datagrid多行删除的示例代码
2017/01/14 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
2017/01/20 Javascript
vue2.0 axios前后端数据处理实例代码
2017/06/30 Javascript
JavaScript常用数学函数用法示例
2018/05/14 Javascript
vue 对象添加或删除成员时无法实时更新的解决方法
2019/05/01 Javascript
Vue中的组件及路由使用实例代码详解
2019/05/22 Javascript
vue使用video插件vue-video-player详解
2020/10/23 Javascript
最基础的Python的socket编程入门教程
2015/04/23 Python
Python 正则表达式实现计算器功能
2017/04/29 Python
Python实现翻转数组功能示例
2018/01/12 Python
对Python中数组的几种使用方法总结
2018/06/28 Python
Flask-Mail用法实例分析
2018/07/21 Python
详解Python下载图片并保存本地的两种方式
2019/05/15 Python
Python Numpy中数据的常用保存与读取方法
2020/04/01 Python
基于Python制作一副扑克牌过程详解
2020/10/19 Python
MoviePy简介及Python视频剪辑自动化
2020/12/18 Python
小学后勤管理制度
2014/01/14 职场文书
《问银河》教学反思
2014/02/19 职场文书
《欢乐的泼水节》教学反思
2014/04/22 职场文书
会计学专业求职信
2014/07/17 职场文书
企业法人授权委托书范本
2014/09/23 职场文书
开展批评与自我批评心得体会
2014/10/17 职场文书
2014年财务工作总结范文
2014/11/11 职场文书
施工现场安全管理制度
2015/08/05 职场文书
房产遗嘱范本
2015/08/06 职场文书