什么';PHP中int的最大值是多少?

什么';PHP中int的最大值是多少?,php,integer,Php,Integer,忽略允许您处理非常大的数字的特殊库,您可以在PHP中存储的最大int值是多少?啊,我找到了:232-1(2147483647) 整数溢出 如果PHP遇到一个超出整数类型边界的数字,它将被解释为浮点。此外,导致数字超出整数类型边界的操作将返回浮点值 PHP int的大小是: 整数的大小为 依赖于平台,但最大 价值约20亿美元是最重要的 通常值(即32位有符号)。 PHP不支持未签名 整数。整数大小可以是 用常数确定 PHP_INT_大小,以及使用 自PHP以来的常量PHP_INT_MAX 4.4

忽略允许您处理非常大的数字的特殊库,您可以在PHP中存储的最大int值是多少?

啊,我找到了:232-1(2147483647)

整数溢出

如果PHP遇到一个超出整数类型边界的数字,它将被解释为浮点。此外,导致数字超出整数类型边界的操作将返回浮点值

PHP int的大小是:

整数的大小为 依赖于平台,但最大 价值约20亿美元是最重要的 通常值(即32位有符号)。 PHP不支持未签名 整数。整数大小可以是 用常数确定 PHP_INT_大小,以及使用 自PHP以来的常量PHP_INT_MAX 4.4.0和PHP5.0.5


PHP6添加了“longs”(64位整数)。

这取决于您的操作系统,但根据以下文件中的说明,2147483647是通常的值:

整数的大小为 依赖于平台,但最大 价值约20亿美元是最重要的 通常值(即32位有符号)。 PHP不支持未签名 整数。整数大小可以是 用常数确定 PHP_INT_大小,以及使用 自PHP以来的常量PHP_INT_MAX 4.4.0和PHP5.0.5

64位平台的最大值通常约为9E18,但在PHP7之前的Windows上除外,该值始终为32位


PHP的32位版本:

  • 整数可以从-21474836482147483647(±20亿)
64位PHP版本:

  • 整数可以从-92233720368547758089223372036854775807(±9五百万)
数字包括在内

注意:有些64位版本曾经使用32位整数,尤其是较旧的PHP Windows版本

这些范围之外的值由浮点值表示,这些范围内的非整数值也是如此。解释器将根据计算结果值是否不能表示为整数,自动确定何时需要切换到浮点

PHP本身不支持“无符号”整数,将所有整数的最大值限制在“有符号”整数的范围内。

(有点晚,但可能有用)

仅限信任,此值随arch(32/64位)和操作系统而异


任何其他“猜测”或“提示”都可能是错误的。

尽管
PHP\u INT.*
常量存在很长时间,但可以通过编程方式左移直到达到负数,找到相同的最小值/最大值:

$x = 1;
while ($x > 0 && $x <<= 1);
echo "MIN: ", $x;
echo PHP_EOL;
echo "MAX: ", ~$x;
$x=1;

而($x>0&&$x则取决于运行PHP的服务器的体系结构。对于64位


打印PHP_INT_MIN.,“.PHP_INT_MAX;
产生
-9223372036854775808,9223372036854775807

好吧,在amd64 linux上,它的9223372036854775807(2^63-1)是很多数字,这是我在购买专用服务器时可以想到的第一个选择AMD而不是英特尔的原因。:)@karim79,我认为这是因为arch是64位的,而不是AMD。=]AMD64是AMD和Intel最近使用的64位体系结构的一个名称。它的其他名称包括x64和Intel 64。正如strager所说,与之无关的是AMDMy windows XAMPP echo的2147483647。我有AMD Athlon X2,我没有得到这些反对票。这是一个问题非常好的答案,即使加入了一些额外的信息。+1来纠正它。这个答案最初读作“平台独立”(不依赖)。它也(仍然)声称64位整数在PHP6之前不存在。这是错误的。PHP6从未发生过,所以这有点不相关。PHP4和5现在真的过时了,所以这是一个没有实际意义的观点,但问题是PHP4和PHP5也有64位整数-这不是PHP6中添加的东西,也没有任何PHP版本有一种称为“long”的整数类型“。整型仅依赖于平台。这是32位平台上的情况。还要考虑很多人在64位平台上运行服务器。具体来说,这取决于您是在32位平台上运行还是64位运行。在大多数人运行32位服务器的世界中,32位只是“常见的”。有趣的是,在32位构建中,浮点数可以将整数值精度保持在比整数更高的水平-浮点数可以用于高达2^53+1的整数值,大大高于整数的2^31-1。在64位构建中,这是相反的,因为浮点的精度相同,但整数现在高达2^63-1。
$x = 1;
while ($x > 0 && $x <<= 1);
echo "MIN: ", $x;
echo PHP_EOL;
echo "MAX: ", ~$x;