更好的理解 php 浮点类型
更好的理解 php 浮点类型
例子
先来个简单的例子,这个例子很多人喜欢,而且也最能说明问题。
$a = 0.58 *100;
var(intval($a));
输出结果是 57,相信很多人也看过这类的说明,也有很多文章说不要相信浮点运算,任何语言都是。
接着我们来看看到底是怎么回事,其实在 0.58 * 100
时计算机内部二进制存储时是有误差的,只不过显示不出来而已。
实验
那我们再做个实验。
$a = 57.9999999999999;
echo $a;
上面显示的是 58,所以对于浮点类型的值,眼见不一定为实。
precision
经过群里小伙伴的提醒,PHP 设置中有一个 precision 配置,用于显示浮点有效位数的。
当设置为 -1 时就可以显示出原始数据,那时候就眼见为实了。
但是如果使用 -1 的配置,在使用 BCMath 库的相关函数时会过于精度无法正确判断,比如,当 precision 为 -1 时,bccomp(0.58*100, 58, 2) 返回是 -1,当 precision 为默认 14 时 返回为 0。
思考
以下结果是什么?
$a = 57.999999999999999;
var_dump($a === (double)58);
所有文章为原创,如非授权,请勿转载。
我们要多多支持有创造能力的人,因为那是我们所有人的希望。
同时我们也希望成为有创造能力的人,我们支持开源,同时也支持正版。
🎈数码荔技正版软件商店🎈
【正版】微软 Office 365
【正版】老牌文件对比工具 Beyond Compare
【正版】JetBrains Idea Java IDE
不断学习,慢慢进步,做时间的朋友。
注意力 > 时间 > 金钱。 -- 建伟 F4nniu
我们要多多支持有创造能力的人,因为那是我们所有人的希望。
同时我们也希望成为有创造能力的人,我们支持开源,同时也支持正版。
🎈数码荔技正版软件商店🎈
【正版】微软 Office 365
【正版】老牌文件对比工具 Beyond Compare
【正版】JetBrains Idea Java IDE
不断学习,慢慢进步,做时间的朋友。
注意力 > 时间 > 金钱。 -- 建伟 F4nniu
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
2019-07-15 KiCad 不可以画线宽小于 0.2mm 的走线?
2018-07-15 如何打开 Windows 的热键提示