最近在做一个?的相加减问题是,出现了浮点运算不准的情况,看来都说解释型语言对于浮点运算都会有问题的说法是真的。

首先看一段代码:

<?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下的浮点运算不准的解决方法全部内容了,希望大家多多支持Devmax~

PHP下的浮点运算不准的解决方法的更多相关文章

  1. 从IOS / iPad / iPhone的最大速度

    我使用OpenCVforiOS完成计算密集型应用程序.当然这很慢.但它比我的PC原型慢了200倍.所以我正在优化它.从最初的15秒,我能够获得0.4秒的速度.我想知道我是否找到了所有的东西以及别人想要分享的东西.我做了什么:>将OpenCV中的“double”数据类型替换为“float”.双倍是64位,32位cpu不能轻易处理,所以浮动给了我一些速度.OpenCV经常使用双倍.>为编译器选项添加了

  2. 如何在iOS中使用GL_HALF_FLOAT_OES类型的纹理?

    谢谢!

  3. 在iOS ARM设备(iPhone 4)上支持非正常IEEE 754浮点数

    >可以将iOS系统设置为提供对正常数量的支持,而不要求编译器仅生成完整的软件浮点代码?是.这可以通过将FPSCR中的FZ位设置为零来实现:请注意,当遇到可观量的非正常值时,这可能会导致应用程序性能的显着下降.您可以恢复默认浮点状态,然后再调用任何不使ABI保证在非默认模式下正常工作的代码:请提交bugreport请求,为iOS中的FP操作模式提供更好的文档.

  4. 从iOS应用程序发送帖子到PHP脚本不工作…简单的解决方案就像

    我之前已经做了好几次了但是由于某些原因我无法通过这个帖子…我尝试了设置为_POST且没有的变量的PHP脚本……当它们未设置为发布时它工作精细.这是我的iOS代码:这里是PHP的一大块,POST变量不在正确的位置?我想这对于更有经验的开发人员来说是一个相当简单的答案,感谢您的帮助!解决方法$_POST是一个数组,而不是一个函数.您需要使用方括号来访问数组索引:

  5. ios – 舍入集合视图的浮点值时出错

    我想在我的设备上摆脱一个像素问题.我正在设计一个如下所示的日历我正在为此目的使用UICollectionViewCell问题是,如果我增加宽度甚至0.0000001点,那么每行绘制的单元格数量是6而不是7.我已尝试增加UIEdgeInset(0.00001),但这是同样的问题.流布局的属性已正确设置.如何在不留空隙的情况下使单元尺寸保持一致?电池的实际宽度为53.571428571428569(3

  6. Swift教程05-基本数据类型(一)整型浮点型

    Swift的基本数据类型与Oc的数据类型有一些不同;除了写法改变了一些之外,还增加了一些类型,下面来由浅入深的介绍其基本数据类型注意:基本数据类型以大写字母开头,不同于C语言!

  7. swift基本语法—变量和常量—整型-浮点型 -布尔型 bool

    swift基本语法——变量和常量swift语言中声明变量使用var关键字,声明常量使用let关键字importFoundationvarStr="helloworld"//Str是变量varnum:StringletInstrationCount:Int=2//InstrationCount是常量vartemp:Float32=2.8//Str=1024//编译会失败,不能修改常量//varNum

  8. Swift学习笔记二十三——Swift泛型初识

    泛型的概念在Java中也是存在的,泛型可以使代码更为精炼,是对数据类型使用的一种优化。如果此时又多了一个需求,需要判断两个浮点型的是否相等。那怎么办,代码实现基本和上面一样,不过我们又得重新写一遍浮点型的代码:。以上两个代码将会导致代码可重用性变差且变得冗余,如果使用泛型来实现,将会变得很简单:.泛型的实现是不是很高大上呢。让我们的代码也提升B格吧。

  9. Swift 2.0学习笔记Day 13——数据类型之整型和浮点型

    浮点型主要用来储存小数数值,也可以用来储存范围较大的整数。它分为浮点数和双精度浮点数两种,双精度浮点数所使用的内存空间比浮点数多,可表示的数值范围与精确度也比较大。欢迎关注关东升新浪微博@tony_关东升。

  10. Swift快速入门-2-型别安全及推断、整点浮点转换

    本文参考Apple官网文档,仅是快速学习的笔记,写的不是太详细,想看想详细点的请见http://www.apple.com/swift/下方有原文下载,国内也有很多翻译的好文章=============letiNumber=38会自动推断为Int类型letpi=3.1415926会推断为Doubler而不是Float===和C#不同的是,会自动推断计算过后的值,如果超过可储存的范围会编译错误,如:

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部