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 相关文章推荐
杏林同学录(六)
Oct 09 PHP
网络资源
Oct 09 PHP
比较时间段一与时间段二是否有交集的php函数
May 31 PHP
php数组函数序列之array_flip() 将数组键名与值对调
Nov 07 PHP
Php Ctemplate引擎开发相关内容
Mar 03 PHP
使用PHP计算两个路径的相对路径
Jun 14 PHP
php 模拟POST提交的2种方法详解
Jun 17 PHP
php 调用ffmpeg获取视频信息的简单实现
Apr 03 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
Sep 22 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
php利用array_search与array_column实现二维数组查找
Jul 08 PHP
Laravel框架中集成MongoDB和使用详解
Oct 17 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
简单介绍下 PHP5 中引入的 MYSQLI的用途
2007/03/19 PHP
PHPExcel导出2003和2007的excel文档功能示例
2017/01/04 PHP
TextArea 控件的最大长度问题(js json)
2009/12/16 Javascript
js获取TreeView控件选中节点的Text和Value值的方法
2012/11/24 Javascript
nodejs教程之制作一个简单的文章发布系统
2014/11/21 NodeJs
九种原生js动画效果
2015/11/11 Javascript
jQuery Dialog对话框事件用法实例分析
2016/05/10 Javascript
js中scrollTop()方法和scroll()方法用法示例
2016/10/03 Javascript
JavaScript获取服务器端时间的方法
2016/11/29 Javascript
js实现点击每个li节点,都弹出其文本值及修改
2016/12/15 Javascript
JS多物体实现缓冲运动效果示例
2016/12/20 Javascript
微信小程序 选项卡的简单实例
2017/05/24 Javascript
面包屑导航详解
2017/12/07 Javascript
Vue CLI3 如何支持less的方法示例
2018/08/29 Javascript
vue-cli webpack 引入swiper的操作方法
2018/09/15 Javascript
Vue使用NProgress进度条的方法
2019/09/21 Javascript
vue实现购物车小案例
2019/09/27 Javascript
JavaScript判断数组类型的方法
2019/10/23 Javascript
[03:49]DOTA2 2015国际邀请赛中国区预选赛第二日现场百态
2015/05/27 DOTA
Python制作数据导入导出工具
2015/07/31 Python
python简单实现操作Mysql数据库
2018/01/29 Python
python实现微信自动回复机器人功能
2019/07/11 Python
python3 写一个WAV音频文件播放器的代码
2019/09/27 Python
python如何使用jt400.jar包代码实例
2019/12/20 Python
django数据模型(Model)的字段类型解析
2019/12/25 Python
加拿大时尚少女服装品牌:Garage
2016/10/10 全球购物
欧舒丹澳洲版:L’OCCITANE
2017/07/17 全球购物
Lulu Guinness露露·吉尼斯官网:红唇包
2019/02/03 全球购物
Desigual美国官方网站:西班牙服装品牌
2019/03/29 全球购物
国外的一些J2EE面试题一
2012/10/13 面试题
建筑设计学生的自我评价
2014/01/16 职场文书
四风问题自查自纠工作情况报告
2014/10/28 职场文书
故宫的导游词
2015/01/31 职场文书
教师学期述职自我鉴定
2019/08/16 职场文书
Java输出Hello World完美过程解析
2021/06/13 Java/Android
idea以任意顺序debug多线程程序的具体用法
2021/08/30 Java/Android