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和ACCESS写聊天室(一)
Oct 09 PHP
从C/C++迁移到PHP——判断字符类型的函数
Oct 09 PHP
PHP URL地址获取函数代码(端口等) 推荐
May 15 PHP
PHP判断是否为空的几个函数对比
Apr 21 PHP
php面向对象编程self和static的区别
May 08 PHP
php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)
Feb 04 PHP
php脚本守护进程原理与实现方法详解
Jul 20 PHP
php实现数组中出现次数超过一半的数字的统计方法
Oct 14 PHP
Laravel如何创建服务器提供者实例代码
Apr 15 PHP
php实现通过stomp协议连接ActiveMQ操作示例
Feb 23 PHP
Laravel Reponse响应客户端示例详解
Sep 03 PHP
PHP7 list() 函数修改
Mar 09 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 Session存储到Redis的方法
2013/11/04 PHP
php提取字符串中网站url地址的方法
2014/12/03 PHP
PHP实现获取并生成数据库字典的方法
2016/05/04 PHP
php读取qqwry.dat ip地址定位文件的类实例代码
2016/11/15 PHP
thinkphp5框架实现数据库读取的数据转换成json格式示例
2019/10/10 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
jquery $.ajax入门应用二
2008/11/19 Javascript
Extjs TriggerField在弹出窗口显示不出问题的解决方法
2010/01/08 Javascript
THREE.JS入门教程(2)着色器-上
2013/01/24 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
javascript 闭包详解及简单实例应用
2016/12/31 Javascript
微信小程序 设置启动页面的两种方法
2017/03/09 Javascript
Vue2 Vue-cli中使用Typescript的配置详解
2017/07/24 Javascript
bootstrap switch开关组件使用方法详解
2017/08/22 Javascript
Webpack devServer中的 proxy 实现跨域的解决
2018/06/15 Javascript
浅析js中mvvm模式实现的原理
2018/10/06 Javascript
jquery validate 实现动态增加/删除验证规则操作示例
2019/10/28 jQuery
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
浅谈机器学习需要的了解的十大算法
2017/12/15 Python
django1.11.1 models 数据库同步方法
2018/05/30 Python
python字典改变value值方法总结
2019/06/21 Python
python super函数使用方法详解
2020/02/14 Python
django 实现手动存储文件到model的FileField
2020/03/30 Python
Python闭包与装饰器原理及实例解析
2020/04/30 Python
Python 通过正则表达式快速获取电影的下载地址
2020/08/17 Python
解决canvas转base64/jpeg时透明区域变成黑色背景的方法
2016/10/23 HTML / CSS
美国顶尖折扣时尚购物网:Bluefly
2016/08/28 全球购物
HEMA法国:荷兰原创设计
2019/02/21 全球购物
介绍一下如何优化MySql
2016/12/20 面试题
顶碗少年教学反思
2014/02/21 职场文书
三八节标语
2014/06/27 职场文书
蛋糕店创业计划书范文
2014/09/21 职场文书
搞笑老公保证书
2015/02/26 职场文书
毕业典礼主持词
2015/06/29 职场文书
Apache Calcite 实现方言转换的代码
2021/04/24 Servers
python字符串拼接.join()和拆分.split()详解
2021/11/23 Python