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 相关文章推荐
留言板翻页的实现详解
Oct 09 PHP
php 变量定义方法
Jun 14 PHP
百度ping方法使用示例 自动ping百度
Jan 26 PHP
php多功能图片处理类分享(php图片缩放类)
Mar 14 PHP
写一段简单的PHP建立文件夹代码
Jan 06 PHP
PHP6新特性分析
Mar 03 PHP
浅析Yii2集成富文本编辑器redactor实例教程
Apr 25 PHP
深入理解PHP原理之执行周期分析
Jun 01 PHP
PHP加密技术的简单实现
Sep 04 PHP
PHP实现的猴王算法(猴子选大王)示例
Apr 30 PHP
PHP实现数组转JSon和JSon转数组的方法示例
Jun 14 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
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
PHP 简易输出CSV表格文件的方法详解
2013/06/20 PHP
thinkphp 一个页面使用2次分页的实现方法
2013/07/15 PHP
详细对比php中类继承和接口继承
2018/10/11 PHP
javascript 常用代码技巧大收集
2009/02/25 Javascript
jquery中的$(document).ready()与window.onload的区别
2009/11/18 Javascript
Node.js实战 建立简单的Web服务器
2012/03/08 Javascript
使用js实现雪花飘落效果
2013/08/26 Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
2014/04/11 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 简史
2015/01/09 Javascript
JQuery悬停控制图片轮播——代码简单
2015/08/05 Javascript
在JavaScript的jQuery库中操作AJAX的方法讲解
2015/08/15 Javascript
Vue-Router进阶之滚动行为详解
2017/09/13 Javascript
Js中async/await的执行顺序详解
2017/09/22 Javascript
swiper动态改变滑动内容的实现方法
2018/01/17 Javascript
JavaScript设计模式之建造者模式实例教程
2018/07/02 Javascript
解决vue 中 echart 在子组件中只显示一次的问题
2018/08/07 Javascript
vue模仿网易云音乐的单页面应用
2019/04/24 Javascript
微信小程序实现的canvas合成图片功能示例
2019/05/03 Javascript
微信小程序实现下拉框功能
2019/07/16 Javascript
vue柱状进度条图像的完美实现方案
2019/08/26 Javascript
Python写的英文字符大小写转换代码示例
2015/03/06 Python
python解决汉字编码问题:Unicode Decode Error
2017/01/19 Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
2017/01/20 Python
Django项目中包含多个应用时对url的配置方法
2018/05/30 Python
django数据关系一对多、多对多模型、自关联的建立
2019/07/24 Python
Python魔法方法 容器部方法详解
2020/01/02 Python
Python Merge函数原理及用法解析
2020/09/16 Python
Python环境使用OpenCV检测人脸实现教程
2020/10/19 Python
python实现定时发送邮件到指定邮箱
2020/12/23 Python
css3.0新属性效果在ie下的解决方案
2010/05/10 HTML / CSS
德国家用电器购物网站:Premiumshop24
2019/08/22 全球购物
体育系毕业生自荐信
2014/06/28 职场文书
2015年女工委工作总结
2015/07/27 职场文书
团队合作精神学习心得体会
2016/01/19 职场文书
详解JS ES6编码规范
2021/05/07 Javascript
Redis Stream类型的使用详解
2021/11/11 Redis