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多用户计数器代码
Mar 11 PHP
PHP之COOKIE支持详解
Sep 20 PHP
Session保存到数据库的php类分享
Oct 24 PHP
PHP分多步骤填写发布信息的简单方法实例代码
Sep 23 PHP
php生成excel列序号代码实例
Dec 24 PHP
PHP独立Session数据库存储操作类分享
Jun 11 PHP
Codeigniter操作数据库表的优化写法总结
Jun 12 PHP
PHP与MYSQL中UTF8编码的中文排序实例
Oct 21 PHP
php简单实现快速排序的方法
Apr 04 PHP
yii2.0整合阿里云oss的示例代码
Sep 19 PHP
Laravel框架数据库迁移操作实例详解
Apr 06 PHP
Nginx+php配置文件及原理解析
Dec 09 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利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
Laravel框架搜索分页功能示例
2019/02/01 PHP
php微信扫码支付 php公众号支付
2019/03/24 PHP
javascript实现点击按钮让DIV层弹性移动的方法
2015/02/24 Javascript
JS实现双击屏幕滚动效果代码
2015/10/28 Javascript
JavaScript+html5 canvas绘制的小人效果
2016/01/27 Javascript
jQuery事件与动画基础详解
2017/02/23 Javascript
js css自定义分页效果
2017/02/24 Javascript
详解vue2路由vue-router配置(懒加载)
2017/04/08 Javascript
vue学习笔记之指令v-text &amp;&amp; v-html &amp;&amp; v-bind详解
2017/05/12 Javascript
浅谈Angular2 ng-content 指令在组件中嵌入内容
2017/08/18 Javascript
浅谈Emergence.js 检测元素可见性的 js 插件
2017/11/18 Javascript
Koa2微信公众号开发之本地开发调试环境搭建
2018/05/16 Javascript
Vue实现验证码功能
2019/12/03 Javascript
微信小程序实现日历小功能
2020/11/18 Javascript
使用Turtle画正螺旋线的方法
2017/09/22 Python
Python中协程用法代码详解
2018/02/10 Python
Django自定义manage命令实例代码
2018/02/11 Python
Python远程视频监控程序的实例代码
2019/05/05 Python
详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
2019/07/01 Python
python+numpy实现的基本矩阵操作示例
2019/07/19 Python
Django自带日志 settings.py文件配置方法
2019/08/30 Python
Python图像处理库PIL中图像格式转换的实现
2020/02/26 Python
Python 下载Bing壁纸的示例
2020/09/29 Python
世界上第一个创建了罩杯系统的美国内衣品牌:Maidenform
2019/03/23 全球购物
演讲比赛获奖感言
2014/02/02 职场文书
《新型玻璃》教学反思
2014/04/13 职场文书
我爱我家教学反思
2014/05/01 职场文书
城市规划应届毕业生自荐信
2014/07/04 职场文书
医学检验专业自荐信
2014/09/18 职场文书
2014年团工作总结
2014/11/27 职场文书
2015年团支部年度工作总结
2015/05/27 职场文书
2015党建工作简报
2015/07/21 职场文书
zabbix监控mysql的实例方法
2021/06/02 MySQL
教你如何用Python实现人脸识别(含源代码)
2021/06/23 Python