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 相关文章推荐
使用TinyButStrong模板引擎来做WEB开发
Mar 16 PHP
php学习之 数组声明
Jun 09 PHP
php中常用的预定义变量小结
May 09 PHP
获取PHP警告错误信息的解决方法
Jun 03 PHP
PHP远程采集图片详细教程
Jul 01 PHP
ThinkPHP3.2.2的插件控制器功能简述
Jul 09 PHP
CI框架中cookie的操作方法分析
Dec 12 PHP
PHP获取昨天、今天及明天日期的方法
Feb 03 PHP
PHP常见错误提示含义解释(实用!值得收藏)
Apr 25 PHP
PHP读取CSV大文件导入数据库的实例
Jul 24 PHP
PHP中ltrim()函数的用法与实例讲解
Mar 28 PHP
php实现的表单验证类完整示例
Aug 13 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下通过POST还是GET来传值
2008/06/05 PHP
PHP 日期加减的类,很不错
2009/10/10 PHP
个人写的PHP验证码生成类分享
2014/08/21 PHP
php+mysqli事务控制实现银行转账实例
2015/01/29 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
ExtJS4 Grid改变单元格背景颜色及Column render学习
2013/02/06 Javascript
JS 按钮点击触发(兼容IE、火狐)
2013/08/07 Javascript
js实现鼠标悬浮给图片加边框的方法
2015/01/30 Javascript
分享javascript实现的冒泡排序代码并优化
2016/06/05 Javascript
JS实现的跨浏览器解析XML文件实例
2016/06/21 Javascript
基于Node.js + WebSocket打造即时聊天程序嗨聊
2016/11/29 Javascript
详解Nodejs基于mongoose模块的增删改查的操作
2016/12/21 NodeJs
jQuery基本选择器和层次选择器学习使用
2017/02/27 Javascript
解决Vue打包之后文件路径出错的问题
2018/03/06 Javascript
JS构造一个html文本内容成文件流形式发送到后台
2018/07/31 Javascript
vue与原生app的对接交互的方法(混合开发)
2018/11/28 Javascript
JQuery Ajax执行跨域请求数据的解决方案
2018/12/10 jQuery
JavaScript中的相等操作符使用详解
2019/12/21 Javascript
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
[01:08:29]DOTA2-DPC中国联赛定级赛 RNG vs Aster BO3第一场 1月9日
2021/03/11 DOTA
python获取文件扩展名的方法
2015/07/06 Python
Python 爬虫模拟登陆知乎
2016/09/23 Python
python 写入csv乱码问题解决方法
2016/10/23 Python
使用Python实现windows下的抓包与解析
2018/01/15 Python
python 实现单通道转3通道
2019/12/03 Python
通过python检测字符串的字母
2020/02/18 Python
Python ORM框架Peewee用法详解
2020/04/29 Python
详解基于Scrapy的IP代理池搭建
2020/09/29 Python
Python descriptor(描述符)的实现
2020/11/15 Python
基于注解实现 SpringBoot 接口防刷的方法
2021/03/02 Python
利用HTML5中的Canvas绘制一张笑脸的教程
2015/05/07 HTML / CSS
canvas仿写贝塞尔曲线的示例代码
2017/12/29 HTML / CSS
运动会稿件300字
2014/02/14 职场文书
庆祝三八妇女节标语
2014/10/09 职场文书
影视后期实训报告
2014/11/05 职场文书
Python学习之异常中的finally使用详解
2022/03/16 Python