除了允许您使用非常大的数字进行操作的特殊库之外,在PHP中可以存储的最大整数值是多少?
根据PHP手册:
整数的大小依赖于平台,通常最大值是约20亿(32位有符号整数)。PHP不支持无符号整数。可以使用常量PHP_INT_SIZE确定整数的大小,并使用常量PHP_INT_MAX确定最大值,自PHP 4.4.0和PHP 5.0.5以来。
64位平台通常具有约9E18的最大值,但在PHP 7之前的Windows平台上,它始终为32位。
32位版 PHP:
64位版 PHP:
数字包括在范围内。
注意:有些64位版本曾使用32位整数,特别是较早的 Windows 版本 PHP。
超出这些范围的值会用浮点数表示,这个范围内的非整数值也将如此。解释器将根据计算结果是否可以表示为整数自动确定何时需要切换到浮点数。
PHP 不支持“无符号”整数,因此所有整数的最大值都限制在“有符号”整数的范围内。
long
,它是一个带符号的64位整数。C有unsigned long long
,在64位架构上可以给你一个无符号的64位整数。这意味着在Java和C中,您可以创建比JavaScript中的number
表达更高的整数值。例如,在创建JSON API时,这很重要。 - Stijn de WittPHP中整数的大小是平台相关的:
整数的大小取决于平台,尽管通常的最大值为约20亿(即32位有符号整数)。PHP不支持无符号整数。整数大小可以使用常量PHP_INT_SIZE确定,最大值可以使用常量PHP_INT_MAX自PHP 4.4.0和PHP 5.0.5起使用。
PHP 6添加了“longs”(64位整数)。
啊,我找到了:232 - 1 (2147483647)
整数溢出
如果PHP遇到超出整数类型范围的数字,它将被解释为浮点数。此外,导致结果超出整数类型范围的操作将返回一个浮点数。
<?php
$large_number = 2147483647;
var_dump($large_number);
// output: int(2147483647)
$large_number = 2147483648;
var_dump($large_number);
// output: float(2147483648)
这取决于 PHP 运行的服务器架构。对于 64 位,
print PHP_INT_MIN . ", ” . PHP_INT_MAX;
的输出结果是 -9223372036854775808, 9223372036854775807
(注:原文中的 "Original Answer" 翻译成中文有些奇怪,这里已经省略了)
根据手册,这取决于您的操作系统,但2147483647是通常的值。
PHP_INT_*
常量已经存在很长时间,但是通过左移直到达到负数可以编程地找到相同的 MIN / MAX 值:$x = 1;
while ($x > 0 && $x <<= 1);
echo "MIN: ", $x;
echo PHP_EOL;
echo "MAX: ", ~$x;