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读取IMAP邮件
Oct 09 PHP
屏蔽浏览器缓存另类方法
Oct 09 PHP
解析php dirname()与__FILE__常量的应用
Jun 24 PHP
thinkphp模板赋值与替换实例简述
Nov 24 PHP
php读取文件内容的方法汇总
Jan 24 PHP
php判断两个日期之间相差多少个月份的方法
Jun 18 PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
Nov 05 PHP
php阿拉伯数字转中文人民币大写
Dec 21 PHP
PHP pear安装配置教程
May 14 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
Dec 25 PHP
php+redis实现商城秒杀功能
Nov 19 PHP
PHP实现批量修改文件名的方法示例
Sep 18 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 ajax实现文件上传进度条
2016/03/29 PHP
PHP判断JSON对象是否存在的方法(推荐)
2016/07/06 PHP
jquery的颜色选择插件实例代码
2008/10/02 Javascript
心扬JS分页函数代码
2010/09/10 Javascript
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
2013/07/04 Javascript
jquery实现checkbox全选全不选的简单实例
2013/12/31 Javascript
jQuery和AngularJS的区别浅析
2015/01/29 Javascript
使用jquery.qrcode.min.js实现中文转化二维码
2016/03/11 Javascript
javascript获取select标签选中的值
2016/06/04 Javascript
Javascript 调用 ActionScript 的简单方法
2016/09/22 Javascript
JavaScript随机生成颜色的方法
2016/10/15 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
2017/04/13 Javascript
mac上node.js环境的安装测试
2017/07/03 Javascript
vue自定义指令的创建和使用方法实例分析
2018/12/04 Javascript
利用不到200行代码写一款属于你自己的js类库
2019/07/08 Javascript
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
2019/08/23 Javascript
layui 实现表格某一列显示图标
2019/09/19 Javascript
vue实现简单的登录弹出框
2020/10/26 Javascript
[40:03]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
python3+PyQt5使用数据库窗口视图
2018/04/24 Python
数组保存为txt, npy, csv 文件, 数组遍历enumerate的方法
2018/07/09 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
2020/03/27 Python
基于pandas向csv添加新的行和列
2020/05/25 Python
Python导入数值型Excel数据并生成矩阵操作
2020/06/09 Python
python基于opencv 实现图像时钟
2021/01/04 Python
手把手教你用纯css3实现轮播图效果实例
2017/05/04 HTML / CSS
结合 CSS3 transition transform 实现简单的跑马灯效果的示例
2018/02/07 HTML / CSS
信息专业个人的自我评价
2013/12/27 职场文书
恶搞卫生巾广告词
2014/03/18 职场文书
工会趣味活动方案
2014/08/18 职场文书
2014年酒店年度工作总结
2014/12/10 职场文书
冰峪沟导游词
2015/02/09 职场文书
卫生院艾滋病宣传活动总结
2015/05/09 职场文书
2015年环卫处个人工作总结
2015/07/27 职场文书
python 实现体质指数BMI计算
2021/05/26 Python
PostgreSQL聚合函数介绍以及分组和排序
2022/04/12 PostgreSQL