如何在PHP中找出浮点数的大小?

时间:2018-06-06 09:11:55

标签: php floating-point integer size constants

我在 Windows 10家庭单一语言64位操作系统上运行的计算机上使用 PHP 7.2.5(使用最新版本的XAMPP安装) STRONG>。

据我所知,在PHP中,整数和浮点数的大小与平台有关。

PHP提供了一个预定义的常量PHP_INT_SIZE来查找整数的大小,但它没有提供任何这样的常量来查找浮点数的大小。

所以,我的问题是如何在PHP中找出浮点数的大小?

P.S。 :我已经提到Previously Asked Question,但无法为我的问题获得可靠,有效和令人满意的解决方案。在回答这个问题的最后,答案的作者正在做出以下假设

我认为"平台依赖"意味着它在32位平台上使用4个字节(浮点数的传统大小),在64位和更大平台上使用8个字节(传统的双倍)。

我认为这是模糊的,因为它没有更多的相关证据或证据。

2 个答案:

答案 0 :(得分:0)

浮点数的大小取决于平台,但自PHP 7.2起,there actually is a constant PHP_FLOAT_MAX

因为它依赖于平台,所以没有明确的答案。但是你可以在PHP 7.2中至少看到你的平台上有这个常量的最大大小:https://3v4l.org/QpHOI

要计算字节数,我们必须将非常大的浮点数转换为二进制数,然后我们可以手动计算字节数,请参见此处:https://3v4l.org/ASZbs

显然3v4l.org可以处理一些非常大的浮点数,最多128个字节!

向我明确复制粘贴的created a function to convert 32+ bit floats into binary的PHP文档中的匿名用户致信。

答案 1 :(得分:0)

它几乎肯定会使用IEEE 64位格式,因为这基本上是每个平台最近使用的。您可以为该效果添加断言,例如

assert((1.0+pow(2.0,-52))-1 != 0)
assert((1.0+pow(2.0,-53))-1 == 0)

将检查格式是否恰好有53个有效位。