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无限分类的类
Jan 02 PHP
PHP生成带有雪花背景的验证码
Sep 28 PHP
简单PHP上传图片、删除图片实现代码
May 12 PHP
php处理文件的小例子(解压缩,删除目录)
Feb 03 PHP
PHP 解决session死锁的方法
Jun 20 PHP
php之Smarty模板使用方法示例详解
Jul 08 PHP
PHP比你想象的好得多
Nov 27 PHP
PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例
Jan 07 PHP
CI框架中数据库操作函数$this-&gt;db-&gt;where()相关用法总结
May 17 PHP
PHP数据的提交与过滤基本操作实例详解
Nov 11 PHP
Laravel如何同时连接多个数据库详解
Aug 13 PHP
PHP实现简单用户登录界面
Oct 23 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
mysql limit查询优化分析
2008/11/12 PHP
PHP stream_context_create()作用和用法分析
2011/03/29 PHP
php中判断文件空目录是否有读写权限的函数代码
2012/08/07 PHP
jQuery 类twitter的文本字数限制带提示效果插件
2010/04/16 Javascript
解决jquery的.animate()函数在IE6下的问题
2010/12/03 Javascript
js点击出现悬浮窗效果不使用JQuery插件
2014/01/20 Javascript
js点击选择文本的方法
2015/02/09 Javascript
jquery处理页面弹出层查询数据等待操作实例
2015/03/25 Javascript
JavaScript汉诺塔问题解决方法
2015/04/21 Javascript
js实现select跳转菜单新窗口效果代码分享(超简单)
2015/08/21 Javascript
JS与jQ读取xml文件的方法
2015/12/08 Javascript
jquery checkbox的相关操作总结
2016/10/17 Javascript
vue mint-ui学习笔记之picker的使用
2017/10/11 Javascript
vue+webpack模拟后台数据的示例代码
2018/07/26 Javascript
JavaScript实用代码小技巧
2018/08/23 Javascript
js实现web调用摄像头 js截取视频画面
2019/04/21 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
python将多个文本文件合并为一个文本的代码(便于搜索)
2011/03/13 Python
Python基类函数的重载与调用实例分析
2015/01/12 Python
python3.5使用tkinter制作记事本
2016/06/20 Python
Python根据指定日期计算后n天,前n天是哪一天的方法
2018/05/29 Python
Python多图片合并PDF的方法
2019/01/03 Python
Python安装Flask环境及简单应用示例
2019/05/03 Python
Python Sympy计算梯度、散度和旋度的实例
2019/12/06 Python
html5-Canvas可以在web中绘制各种图形
2012/12/26 HTML / CSS
Html5 语法与规则简要概述
2014/07/29 HTML / CSS
在线学习西班牙语、法语或其他语言:Babbel.com
2018/02/07 全球购物
华为c/c++笔试题
2016/01/25 面试题
保密承诺书范文
2014/03/27 职场文书
社区活动总结报告
2014/05/05 职场文书
介绍信模板
2015/01/31 职场文书
2015年新学期寄语
2015/02/26 职场文书
2015年乡镇残联工作总结
2015/05/13 职场文书
《暗黑破坏神2:重制版》本周进行第一轮A测 目前可官网进行申请报名
2021/04/07 其他游戏
Django中session进行权限管理的使用
2021/07/09 Python
MongoDB数据库部署环境准备及使用介绍
2022/03/21 MongoDB