我在运行Windows 10家庭单语言64位操作系统的机器上使用PHP 7.2.5(使用最新版本的XAMPP安装)。
据我所知,在PHP中,整型和浮点型的大小是平台相关的。
PHP提供了一个预定义的常量PHP_INT_SIZE
来确定一个整数的大小,但它没有提供任何这样的常量来确定一个浮点数的大小。
所以,我的问题是我应该如何在PHP中找到浮点数的大小?
P.S.:我参考了Previously Asked Question,但无法为我的问题得到可靠,有效和满意的解决方案。在这个问题的答案的结尾,答案的作者做出了以下假设
- 我认为“平台相关”意味着它在32位平台上使用4个字节(传统的float大小),在64位和更大的平台上使用8个字节(传统的double)。
我认为这是模糊的,因为它没有更多的相关证据或证明。
3条答案
按热度按时间zvms9eto1#
浮点数的大小取决于平台,但从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字节!
感谢PHP文档中的一个匿名用户,他创建了一个函数来将32位以上的浮点数转换为二进制,我公然复制粘贴。
gr8qqesn2#
它几乎肯定会使用IEEE 64位格式,因为这基本上是目前每个平台都使用的格式。
将检查该格式是否正好具有53个有效位。
33qvvth13#
我使用
pack
函数定义了一个常量。