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伪造referer实例代码
Sep 20 PHP
zf框架db类的分页示例分享
Mar 14 PHP
php实现上传图片保存到数据库的方法
Feb 11 PHP
PHP使用内置函数生成图片的方法详解
May 09 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
May 26 PHP
php的常量和变量实例详解
Jun 27 PHP
Laravel框架Auth用户认证操作实例分析
Sep 29 PHP
PHP实现单条sql执行多个数据的insert语句方法
Oct 11 PHP
PHP cookie与session会话基本用法实例分析
Nov 18 PHP
php-7.3.6 编译安装过程
Feb 11 PHP
PHP code 验证码生成类定义和简单使用示例
May 27 PHP
php png失真的原因及解决办法
Nov 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
用Zend Encode编写开发PHP程序
2006/10/09 PHP
Codeigniter注册登录代码示例
2014/06/12 PHP
PHP使用DirectoryIterator显示下拉文件列表的方法
2015/03/13 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
php5对象复制、clone、浅复制与深复制实例详解
2019/08/14 PHP
解决laravel-admin 自己新建页面里 js 需要刷新一次的问题
2019/10/03 PHP
使用EXT实现无刷新动态调用股票信息
2008/11/01 Javascript
jQuery的Ajax时无响应数据的解决方法
2010/05/25 Javascript
原来Jquery.load的方法可以一直load下去
2011/03/28 Javascript
基于jquery的动态创建表格的插件
2011/04/05 Javascript
js常用代码段整理
2011/11/30 Javascript
javascript 兼容所有浏览器的DOM扩展功能
2012/08/01 Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
2012/12/19 Javascript
如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
2014/08/03 NodeJs
JavaScript让网页出现渐隐渐显背景颜色的方法
2015/04/21 Javascript
AngularJS模块学习之Anchor Scroll
2016/01/19 Javascript
jQuery插件ajaxFileUpload使用实例解析
2016/10/19 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
微信小程序开发问题之wx.previewImage
2018/12/25 Javascript
详解使用React.memo()来优化函数组件的性能
2019/03/19 Javascript
详解key在Vue列表渲染时究竟起到了什么作用
2019/04/20 Javascript
vue elementUI table 自定义表头和行合并的实例代码
2019/05/22 Javascript
nodejs log4js 使用详解
2019/05/31 NodeJs
在vue中对数组值变化的监听与重新响应渲染操作
2020/07/17 Javascript
通过vue.extend实现消息提示弹框的方法记录
2021/01/07 Vue.js
Python常用算法学习基础教程
2017/04/13 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
2018/01/07 Python
python实现超简单的视频对象提取功能
2018/06/04 Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
2018/08/02 Python
高品质和独特的产品世界:Creations and Collections
2018/01/07 全球购物
StubHub澳大利亚:购买或出售您的门票
2019/08/01 全球购物
拓展策划方案
2014/06/03 职场文书
建筑横幅标语
2014/10/09 职场文书
超级礼物观后感
2015/06/15 职场文书
Django对接elasticsearch实现全文检索的示例代码
2021/08/02 Python
MySQL中CURRENT_TIMESTAMP的使用方式
2021/11/27 MySQL