php – 所有系统的浮点运算都是一样的吗?
发布时间:2020-12-13 17:03:05 所属栏目:PHP教程 来源:网络整理
导读:我们正在用 PHP创建这个Web应用程序,当我们在报告中工作时,我们有Excel文件来比较我们的结果,以确保我们的编码正在进行正确的操作. 现在我们遇到了浮点算术的一些差异.我们正在进行相同的划分和乘法,并且会遇到略有不同的数字,这会产生明显的差异. 我的问题
我们正在用
PHP创建这个Web应用程序,当我们在报告中工作时,我们有Excel文件来比较我们的结果,以确保我们的编码正在进行正确的操作.
现在我们遇到了浮点算术的一些差异.我们正在进行相同的划分和乘法,并且会遇到略有不同的数字,这会产生明显的差异. 我的问题是,Excel是否将它的浮点算法委托给CPU,而PHP也依赖于CPU进行操作.或者每个应用程序是否实现了自己的数学算法集? 解决方法
Microsoft Excel在特定计算机上使用本机Double类型来执行其计算.我不确定PHP正在使用什么.
但是,应该注意的是,即使在基于x86的机器上复制浮点数也可能会改变它的值.浮点内部存储在80位宽的寄存器中.它们以64位宽的块存储在存储器中.因此,假设Excel和PHP都在基于x86的计算机上运行,??即使使用类似的计算,也可以获得不同的值.特别是在浮点类型支持的范围的极端情况下. 最后,Excel正在使用的双精度和(如果您的PHP代码使用一个)PHP代码中的浮点数之间存在明显差异.确保您没有不匹配,因为浮子的精度要低得多. 编辑:忘了这一点 – 如果PHP或Excel(更可能是Excel)使用SSE扩展,输出会有差异,因为它们的浮点运算操作64位,而不是80位,双倍. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |