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创建PDF中文文档
Oct 09 PHP
基于wordpress主题制作的具体实现步骤
May 10 PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
Dec 22 PHP
php实现文件下载简单示例(代码实现文件下载)
Mar 10 PHP
php中Session的生成机制、回收机制和存储机制探究
Aug 19 PHP
php+mysqli实现批量替换数据库表前缀的方法
Dec 29 PHP
PHP获取QQ达人QQ信息的方法
Mar 05 PHP
php从数组中随机选择若干不重复元素的方法
Mar 14 PHP
PHP回溯法解决0-1背包问题实例分析
Mar 23 PHP
php 生成Tab键或逗号分隔的CSV
Sep 24 PHP
thinkphp5 migrate数据库迁移工具
Feb 20 PHP
PHP操作MongoDB实现增删改查功能【附php7操作MongoDB方法】
Apr 24 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
启用Csrf后POST数据时出现的400错误
2015/07/05 PHP
兼容多浏览器的字幕特效Marquee的通用js类
2008/07/20 Javascript
JavaScript flash复制库类 Zero Clipboard
2011/01/17 Javascript
javascript实现des解密加密全过程
2014/04/03 Javascript
jquery datatable后台封装数据示例代码
2014/08/07 Javascript
在JavaScript的正则表达式中使用exec()方法
2015/06/16 Javascript
自己动手写的javascript前端等待控件
2015/10/30 Javascript
详解JavaScript正则表达式之RegExp对象
2015/12/13 Javascript
JavaScript对象数组排序实例方法浅析
2016/06/15 Javascript
jquery+CSS3实现3D拖拽相册效果
2016/07/18 Javascript
微信小程序 保留小数(toFixed)详细介绍
2016/11/16 Javascript
JQuery 动态生成Table表格实例代码
2016/12/02 Javascript
bootstrap datetimepicker实现秒钟选择下拉框
2017/01/05 Javascript
详解使用angular-cli发布i18n多国语言Angular应用
2017/05/20 Javascript
JS实现动态生成html table表格的方法分析
2018/07/11 Javascript
微信小程序实现多选框全选与取消全选功能示例
2019/05/14 Javascript
Python给你的头像加上圣诞帽
2018/01/04 Python
Python字典创建 遍历 添加等实用基础操作技巧
2018/09/13 Python
python通过tcp发送xml报文的方法
2018/12/28 Python
pandas的排序和排名的具体使用
2019/07/31 Python
python中的 zip函数详解及用法举例
2020/02/16 Python
Python爬虫爬取杭州24时温度并展示操作示例
2020/03/27 Python
python爬虫中抓取指数的实例讲解
2020/12/01 Python
基于CSS3制作立体效果导航菜单
2016/01/12 HTML / CSS
CSS3实现多样的边框效果
2018/05/04 HTML / CSS
关于canvas.toDataURL 在iOS运行失败的问题解决
2020/09/16 HTML / CSS
美国环保妈妈、儿童和婴儿用品购物网站:The Tot
2019/11/24 全球购物
计算机学生的自我评价分享
2014/02/18 职场文书
法律七进实施方案
2014/03/15 职场文书
献爱心标语
2014/06/21 职场文书
党员个人剖析材料(四风问题)
2014/10/07 职场文书
2014年护士个人工作总结
2014/11/11 职场文书
三峡大坝导游词
2015/01/31 职场文书
2016年习主席讲话学习心得体会
2016/01/20 职场文书
Apache压力测试工具的安装使用
2021/03/31 Servers
javascript遍历对象的五种方式实例代码
2021/10/24 Javascript