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中的类-什么叫类
Nov 20 PHP
PHP中__get()和__set()的用法实例详解
Jun 04 PHP
基于PHP读取csv文件内容的详解
Jun 18 PHP
PHP5.5在windows安装使用memcached服务端的方法
Apr 16 PHP
php采用file_get_contents代替使用curl实例
Nov 07 PHP
简单介绍win7下搭建apache+php+mysql开发环境
Aug 06 PHP
yii权限控制的方法(三种方法)
Dec 28 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
Sep 11 PHP
ThinkPHP中调用PHPExcel的实现代码
Apr 08 PHP
PHP实现的DES加密解密类定义与用法示例
Nov 02 PHP
php实现有序数组旋转后寻找最小值方法
Sep 27 PHP
PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析
Jun 12 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环境配置 php5 mysql5 apache2 phpmyadmin安装与配置
2006/11/17 PHP
PHP 简单数组排序实现代码
2009/08/05 PHP
php编写简单的文章发布程序
2015/06/18 PHP
Laravel5中Cookie的使用详解
2017/05/03 PHP
PHP常用字符串函数用法实例总结
2020/06/04 PHP
利用javascript实现一些常用软件的下载导航
2009/08/03 Javascript
javascript+css 网页每次加载不同样式的实现方法
2009/12/27 Javascript
gridpanel动态加载数据的实例代码
2013/07/18 Javascript
Jquery easyUI 更新行示例
2014/03/06 Javascript
Javascript判断文件是否存在(客户端/服务器端)
2014/09/16 Javascript
JS简单计算器实例
2015/01/20 Javascript
jquery使用hide方法隐藏指定id的元素
2015/03/30 Javascript
JavaScript点击按钮后弹出透明浮动层的方法
2015/05/11 Javascript
javascript简单实现类似QQ头像弹出效果的方法
2015/08/03 Javascript
jquery+CSS3模拟Path2.0动画菜单效果代码
2015/08/31 Javascript
Bootstrap每天必学之标签与徽章
2015/11/27 Javascript
nodejs简单实现操作arduino
2016/09/25 NodeJs
微信小程序地图实现展示线路
2020/07/29 Javascript
[43:43]完美世界DOTA2联赛PWL S2 FTD.C vs Rebirth 第一场 11.22
2020/11/24 DOTA
初学python数组的处理代码
2011/01/04 Python
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
django模板语法学习之include示例详解
2017/12/17 Python
不管你的Python报什么错,用这个模块就能正常运行
2018/09/14 Python
Django异步任务之Celery的基本使用
2019/03/23 Python
selenium 安装与chromedriver安装的方法步骤
2019/06/12 Python
selenium2.0中常用的python函数汇总
2019/08/05 Python
django框架F&amp;Q 聚合与分组操作示例
2019/12/12 Python
找Python安装目录,设置环境路径以及在命令行运行python脚本实例
2020/03/09 Python
python实现简单俄罗斯方块
2020/03/13 Python
pycharm下配置pyqt5的教程(anaconda虚拟环境下+tensorflow)
2020/03/25 Python
详解canvas绘图时遇到的跨域问题
2018/03/22 HTML / CSS
韩国CJ食品专卖网:CJonmart
2016/09/11 全球购物
员工薪酬福利制度
2014/01/17 职场文书
三查三看党性分析材料
2014/02/18 职场文书
劳模事迹材料范文
2014/12/24 职场文书
python 网络编程要点总结
2021/06/18 Python