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 相关文章推荐
PHP数据缓存技术
Feb 14 PHP
理解和运用PHP中的多态性[译]
Aug 02 PHP
让CodeIgniter数据库缓存自动过期的处理的方法
Jun 12 PHP
php操作mongoDB实例分析
Dec 29 PHP
php生成mysql的数据字典
Jul 07 PHP
Yii框架实现邮箱激活的方法【数字签名】
Oct 18 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
Feb 04 PHP
yii2.0整合阿里云oss删除单个文件的方法
Sep 19 PHP
PHP Post获取不到非表单数据的问题解决办法
Feb 27 PHP
PHP实现统计代码行数小工具
Sep 19 PHP
laravel框架分组控制器和分组路由实现方法示例
Jan 25 PHP
php使用redis的有序集合zset实现延迟队列应用示例
Feb 20 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文件缓存类用法实例分析
2015/04/22 PHP
基于prototype扩展的JavaScript常用函数库
2010/11/30 Javascript
js数组的基本操作(很全自己整理的)
2014/10/16 Javascript
jquery+json实现分页效果
2016/03/07 Javascript
基于jQuery Tipso插件实现消息提示框特效
2016/03/16 Javascript
JavaScript面向对象程序设计教程
2016/03/29 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
2016/11/20 Javascript
jQuery实现最简单实用的分秒倒计时
2017/02/05 Javascript
原生js FileReader对象实现图片上传本地预览效果
2020/03/27 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
vue 设置proxyTable参数进行代理跨域
2018/04/09 Javascript
jQuery实现炫丽的3d旋转星空效果
2018/07/04 jQuery
JS+H5 Canvas实现时钟效果
2018/07/20 Javascript
JS代码屏蔽F12,右键,粘贴,复制,剪切,选中,操作实例
2019/09/17 Javascript
JS数据类型STRING使用实例解析
2019/12/18 Javascript
jquery实现垂直手风琴导航栏
2020/02/18 jQuery
js构造函数constructor和原型prototype原理与用法实例分析
2020/03/02 Javascript
微信小程序实现可拖动悬浮图标(包括按钮角标的实现)
2020/12/29 Javascript
[01:06]DOTA2亚洲邀请赛专属珍藏-荧煌之礼
2017/03/24 DOTA
[01:06:18]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第二场 1月26日
2021/03/11 DOTA
Python 字符串操作实现代码(截取/替换/查找/分割)
2013/06/08 Python
python通过post提交数据的方法
2015/05/06 Python
Python实现重建二叉树的三种方法详解
2018/06/23 Python
django中SMTP发送邮件配置详解
2019/07/19 Python
opencv调整图像亮度对比度的示例代码
2019/09/27 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
2019/10/14 Python
css3制作动态进度条以及附加jQuery百分比数字显示
2012/12/13 HTML / CSS
免费获得微软MCSD证书赶快行动吧!
2012/11/13 HTML / CSS
俄罗斯EPL钻石珠宝店:ЭПЛ
2019/10/22 全球购物
MIRTA官网:手工包,100%意大利制造
2020/02/11 全球购物
2014全国两会心得体会
2014/03/17 职场文书
故宫的导游词
2015/01/31 职场文书
民事诉讼答辩状范文
2015/05/21 职场文书
HTML5 新增内容和 API详解
2021/11/17 HTML / CSS
Pycharm远程调试和MySQL数据库授权问题
2022/03/18 MySQL
Python尝试实现蒙特卡罗模拟期权定价
2022/04/21 Python