问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

php中$a = 0.3; $b = 1-0.7; var_dump($a == $b);为false $c = 0.7; $d = 1-0.3; var_dump($c == $d);

发布网友 发布时间:2022-12-30 23:24

我来回答

2个回答

热心网友 时间:2023-11-01 00:45

浮点数的精度有限。尽管取决于系统,PHP 通常使用 IEEE 754 双精度格式,则由于取整而导致的最大相对误差为
1.11e-16。非基本数*算可能会给出更大误差,并且要考虑到进行复合运算时的误差传递。

此外,以十进制能够精确表示的有理数如 0.1 或
0.7,无论有多少尾数都不能被内部所使用的二进制精确表示,因此不能在不丢失一点点精度的情况下转换为二进制的格式。这就会造成混乱的结果:例如,floor((0.1+0.7)*10)
通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似
7.9999999999999991118...。

所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数。

热心网友 时间:2023-11-01 00:45

0.3、0.7这样的小数在机器内要换算为二进制,换算成为的二进制有可能是个无限的循环小数,这样就会有误差,不能精确表示。

0.3的二进制格式是:
0.010011001100110011001100110011001100110011001100110011

0.7的二进制格式是:
0.1011001100110011001100110011001100110011001100110011

可以看出位数都是很长的,如果超过机器的精度,就会四舍五入。另外1-0.3、1-0.7的计算过程中也会出现相应的误差,所以浮点数的相等判断没有实际意义,一般是判断两个数的差的绝对值比一个规定的精度小,就算相等。例如:
if (abs(x-y)<0.0000001) echo '相等';
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何查被录取到的专业 怎样查被录取的专业 录取后怎样查询录取的专业 录取专业怎么查 已被录取怎么查专业 ghs网络语什么意思_ghs网络语意思出处含义介绍 纸箱企业管理软件 ghs什么意思网络(ghs什么意思网络用语) 《喜羊羊与灰太狼》大结局 0与任何数相加都得原数吗? ps4未破解前可以联网吗 古剑奇谭的大写字母 奇奇作为单词来写改大写吗 12123周六日会受理业务吗 如何辨别KN95口罩真假? qq被盗找回网站链接 告诉我一个挂QQ 的网址啊 漏电保护开关作用有哪些? 辣炒鸭血 美版的三星手机,在中国能用移动4G吗? 我在美国买了三星S9+型号的手机,我想问下能用中国移动 电信 联通手机卡,这三家可以用哪一个? 你好,美版的note9可以用电信卡吗 *** 鹰犬将军宋希濂简介 ea账号用的国外的邮箱,但是初邮是国内的,国外的邮箱密码忘了,现在登录不了,怎 快易典EF2忘记密码怎么重置? 亲们,你们过年买糖吗?吃糖吗?都吃什么样的糖?会不会在乎糖的含义?对口味有什么要求?急用,谢谢! chkdskc:/b是什么命令 定安胜高酒店电视怎么开 我家的漏电保护总响 是怎么回事呢? 一个长方形有一条线怎么画只有一个1个直? 在php中给定一个数,求数组中最接近的一个值。 椰子500在哪里买正品 经典传奇详细资料大全 金飞主持的传奇故事有个一个月偷好多车的那人是哪期 朗逸能用carplay吗 异世界催眠物语有破解吗 历史微信头像如何找回 到南极科学考察最佳的时间是? 忽必烈是谁的儿子 忽必烈的母亲被称四帝之母 忽必烈的正妻是什么人?忽必烈的儿子真金简介 察必皇后墓地被盗了吗 大雨之水缩写作文500字 我们写作文写下雨 沙岸菊开花,霜枝果垂实。原文_翻译及赏析 市政工程资料包括哪些 河北大学生就业补贴什么时候审核完成 河北就业补贴怎么申请 河北省大学生就业补贴什么时候到账 支付宝怎么查询充值的腾讯会员 缇丽莎尔纹老大是男的还是女的