忽略允许您处理非常大的数字的特殊库,您可以在 PHP 中存储的最大 int 值是多少?
8 回答
从PHP 手册:
整数的大小取决于平台,尽管通常值约为 20 亿的最大值(即 32 位有符号)。PHP 不支持无符号整数。自 PHP 4.4.0 和 PHP 5.0.5 起,可以使用常量 PHP_INT_SIZE 确定整数大小,使用常量 PHP_INT_MAX 确定最大值。
64 位平台的最大值通常约为 9E18,但在 PHP 7 之前的 Windows 上,它始终为 32 位。
PHP 的 32 位版本:
- 整数可以从-2,147,483,648到2,147,483,647(~ ± 20 亿)
PHP 的 64 位版本:
- 整数可以从-9,223,372,036,854,775,808到9,223,372,036,854,775,807(~ ± 9 quintillion)
数字包括在内。
注意:一些 64 位版本曾经使用 32 位整数,尤其是 PHP 的旧 Windows 版本
这些范围之外的值由浮点值表示,这些范围内的非整数值也是如此。解释器将根据计算的结果值是否不能表示为整数来自动确定何时需要切换到浮点。
PHP 本身不支持“无符号”整数,将所有整数的最大值限制在“有符号”整数的范围内。
PHP int 的大小取决于平台:
整数的大小取决于平台,尽管通常值约为 20 亿的最大值(即 32 位有符号)。PHP 不支持无符号整数。自 PHP 4.4.0 和 PHP 5.0.5 起,可以使用常量 PHP_INT_SIZE 确定整数大小,使用常量 PHP_INT_MAX 确定最大值。
PHP 6 添加了“longs”(64 位整数)。
啊,我找到了:2 32 - 1 (2147483647)
整数溢出
如果 PHP 遇到超出整数类型范围的数字,它将被解释为浮点数。此外,导致数字超出整数类型范围的操作将改为返回浮点数。
<?php
$large_number = 2147483647;
var_dump($large_number);
// output: int(2147483647)
$large_number = 2147483648;
var_dump($large_number);
// output: float(2147483648)
这取决于您的操作系统,但根据手册2147483647 是通常的值。
它受制于运行 PHP 的服务器的体系结构。对于 64 位,
print PHP_INT_MIN . ", ” . PHP_INT_MAX;
产量-9223372036854775808, 9223372036854775807
尽管PHP_INT_*
常量存在很长时间,但可以通过左移直到达到负数以编程方式找到相同的 MIN / MAX 值:
$x = 1;
while ($x > 0 && $x <<= 1);
echo "MIN: ", $x;
echo PHP_EOL;
echo "MAX: ", ~$x;