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
PHP 翻页 实例代码
Aug 07 PHP
如何使用php判断服务器是否是HTTPS连接
Jul 05 PHP
php通过字符串调用函数示例
Mar 02 PHP
php中Snoopy类用法实例
Jun 19 PHP
PHP随手笔记整理之PHP脚本和JAVA连接mysql数据库
Nov 25 PHP
Laravel5中防止XSS跨站攻击的方法
Oct 10 PHP
PHP数组操作简单案例分析
Oct 15 PHP
详解php中 === 的使用
Oct 24 PHP
PHP正则删除HTML代码中宽高样式的方法
Jun 12 PHP
php连接MSsql server的五种方法总结
Mar 04 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
Apr 04 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中for循环语句的几种变型
2007/03/16 PHP
Zend Framework教程之前端控制器Zend_Controller_Front用法详解
2016/03/07 PHP
[Web]防止用户复制页面内容和另存页面的方法
2009/02/06 Javascript
jQuery实现的Email中的收件人效果(按del键删除)
2011/03/20 Javascript
JQuery datepicker 使用方法
2011/05/20 Javascript
基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
2011/10/10 Javascript
js限制文本框只能输入整数或者带小数点的数字
2015/04/27 Javascript
jquery简单实现外部链接用新窗口打开的方法
2015/05/30 Javascript
JS实现超简洁网页title标题跑动闪烁提示效果代码
2015/10/23 Javascript
jQuery使用getJSON方法获取json数据完整示例
2016/09/13 Javascript
js数组操作方法总结(必看篇)
2016/11/22 Javascript
nodeJs爬虫的技术点总结
2018/05/13 NodeJs
html2canvas属性和使用方法以及如何使用html2canvas将HTML内容写入Canvas生成图片
2020/01/12 Javascript
js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期
2020/02/01 Javascript
Python找出9个连续的空闲端口
2016/02/01 Python
Appium+Python自动化测试之运行App程序示例
2019/01/23 Python
浅谈python 中类属性共享的问题
2019/07/02 Python
pandas DataFrame 行列索引及值的获取的方法
2019/07/02 Python
python编写简单端口扫描器
2019/09/04 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
2019/10/12 Python
python多项式拟合之np.polyfit 和 np.polyld详解
2020/02/18 Python
解决django FileFIELD的编码问题
2020/03/30 Python
HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍
2013/01/31 HTML / CSS
意大利奢侈品购物网站:Giglio
2018/01/05 全球购物
ProForm英国站点:健身房和健身器材网上商店
2019/06/05 全球购物
世界上最大的字体市场:MyFonts
2020/01/10 全球购物
大专生自我鉴定范文
2013/10/01 职场文书
职业生涯规划怎么写
2013/12/29 职场文书
生产厂长岗位职责
2014/02/21 职场文书
大学生助学金感谢信
2015/01/21 职场文书
社区文明倡议书
2015/04/28 职场文书
收入证明范本
2015/06/12 职场文书
外出听课学习心得体会
2016/01/15 职场文书
六五普法心得体会2016
2016/01/21 职场文书
2016社区平安家庭事迹材料
2016/02/26 职场文书
2016年优秀党务工作者先进事迹材料
2016/02/29 职场文书