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 gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
May 15 PHP
centos 5.6 升级php到5.3的方法
May 14 PHP
php打开远程文件的方法和风险及解决方法
Nov 12 PHP
php获取当前时间的毫秒数的方法
Jan 26 PHP
php实现的支持imagemagick及gd库两种处理的缩略图生成类
Sep 23 PHP
php保存二进制原始数据为图片的程序代码
Oct 14 PHP
php基于GD库画五星红旗的方法
Feb 24 PHP
PHP的Yii框架中Model模型的学习教程
Mar 29 PHP
PHP面试常用算法(推荐)
Jul 22 PHP
ThinkPHP实现附件上传功能
Apr 27 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
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
如何批量替换相对地址为绝对地址(利用bat批处理实现)
2013/05/27 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
2014/01/24 PHP
php中PDO方式实现数据库的增删改查
2015/05/17 PHP
PHP信号量基本用法实例详解
2016/02/12 PHP
php微信公众平台交互与接口详解
2016/11/28 PHP
php 后端实现JWT认证方法示例
2018/09/04 PHP
PHP如何通过带尾指针的链表实现'队列'
2020/10/22 PHP
jQuery 技巧大全(新手入门篇)
2009/05/12 Javascript
js表格分页实现代码
2009/09/18 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
2014/01/02 Javascript
jQuery常用操作方法及常用函数总结
2014/06/19 Javascript
jQuery插件制作之参数用法实例分析
2015/06/01 Javascript
jQuery实用技巧必备(上)
2015/11/02 Javascript
如何防止JavaScript自动插入分号
2015/11/05 Javascript
EasyUI学习之Combobox下拉列表(1)
2016/12/29 Javascript
jQuery简单绑定单个事件的方法示例
2017/06/10 jQuery
使用vue打包时vendor文件过大或者是app.js文件很大的问题
2018/06/29 Javascript
Vue.js递归组件实现组织架构树和选人功能
2019/07/04 Javascript
Element-UI中关于table表格的那些骚操作(小结)
2019/08/15 Javascript
微信小程序收藏功能的实现代码
2020/06/19 Javascript
[50:28]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs KG
2018/04/01 DOTA
[46:42]DOTA2-DPC中国联赛正赛 Aster vs Magma BO3 第二场 3月5日
2021/03/11 DOTA
基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解
2017/10/13 Python
python利用dlib获取人脸的68个landmark
2019/11/27 Python
Python @property及getter setter原理详解
2020/03/31 Python
利用CSS3制作简单的3d半透明立方体图片展示
2017/03/25 HTML / CSS
函授本科毕业自我鉴定
2013/10/09 职场文书
十佳青年个人事迹材料
2014/01/28 职场文书
彩色的非洲教学反思
2014/02/18 职场文书
秋季运动会广播稿
2014/02/22 职场文书
班长演讲稿范文
2014/04/24 职场文书
2014领导班子四风问题对照检查材料思想汇报
2014/09/21 职场文书
邀请函的格式
2015/01/30 职场文书
2015年大学生入党自荐书
2015/03/24 职场文书
Golang 实现获取当前函数名称和文件行号等操作
2021/05/08 Golang
Tomcat项目启动失败的原因和解决办法
2022/04/20 Servers