PHP中int的最大值是多少?


117

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

Answers:


124

PHP手册

整数的大小取决于平台,尽管通常的最大值约为20亿(32位带符号)。PHP不支持无符号整数。自PHP 4.4.0和PHP 5.0.5起,可以使用常数PHP_INT_SIZE确定整数大小,并使用常数PHP_INT_MAX确定最大值。

64位平台的最大值通常约为9E18,但PHP 7之前的Windows始终为32位。


15
好吧,在当今非常普遍的amd64 linux上,其9223372036854754775807(2 ^ 63-1)
derobert

4
这个数字很多-这是我购买专用服务器时想到的第一个理由,是我选择AMD而不是Intel。:)
karim79 2009年

39
@ karim79,我认为这是由于架构是64位的,而不是AMD。=]
斯特拉格2009年

7
AMD64是近来AMD和Intel都使用的64位体系结构的名称之一。它的其他名称包括x64和Intel64。正如strager所说,与它无关的是AMD
thomasrutter 2010年

4
我的Windows XAMPP回显了2147483647。我有AMD Athlon X2
Vova Popov'3

86

32位版本的PHP:

  • 整数可以从-2,147,483,6482,147,483,647(〜±20亿)

64位版本的PHP:

  • 整数可以从-9,223,372,036,854,775,8089,223,372,036,854,775,807(〜±9位数)

数字包括在内。

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

这些范围之外的值由浮点值表示,这些范围内的非整数值也是如此。解释器将基于是否无法将计算结果值表示为整数来自动确定何时需要执行此切换到浮点的操作。

PHP不支持“无符号”整数,因此将所有整数的最大值限制为“有符号”整数的范围。


1
有趣的是,在32位构建中,浮点数可以将整数精度保留为比int高的值-浮点数可以用于最大2 ^ 53 + 1的整数值,远高于int的2 ^ 31-1。在64位版本中,这是相反的,因为浮点数具有相同的精度,但整数现在高达2 ^
63-1。– thomasrutter

21

PHP ints的大小取决于平台

整数的大小取决于平台,尽管通常的最大值约为20亿(32位带符号)。PHP不支持无符号整数。自PHP 4.4.0和PHP 5.0.5起,可以使用常数PHP_INT_SIZE确定整数大小,并使用常数PHP_INT_MAX确定最大值。

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


2
我没有得到这些赞成票。.即使有一些额外的信息,这也是一个很好的答案。+ 1对其进行了更正。
尼克

3
该答案最初显示为“ 依赖平台”(非依赖)。它还(仍然)声称在PHP 6之前不存在64位整数。这是错误的。
thomasrutter

虽然PHP 6从未发生过,所以这是无关紧要的。
BadHorsie


6

啊,我发现它:2 32 - 1(2147483647)

http://au2.php.net/int

整数溢出

如果PHP遇到一个超出整数类型范围的数字,它将被解释为浮点数。同样,导致数字超出整数类型范围的运算将改为返回浮点数。

<?php
$large_number =  2147483647;
var_dump($large_number);
// output: int(2147483647)

$large_number =  2147483648;
var_dump($large_number);
// output: float(2147483648)

8
这就是32位平台上的情况。还请考虑许多人在64位平台上运行服务器。
thomasrutter

2

它取决于您的操作系统,但根据手册,通常值为2147483647 。


6
具体来说,这取决于您是在32位平台还是64位平台上运行。在大多数人运行32位服务器的世界中,32位只是“常见”。事实并非如此。
thomasrutter

0

尽管PHP_INT_*常量存在时间很长,但是通过左移直到达到负数,可以以编程方式找到相同的MIN / MAX值:

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

0

它取决于运行PHP的服务器的体系结构。对于64位,

print PHP_INT_MIN . ", ” . PHP_INT_MAX; 产量 -9223372036854775808, 9223372036854775807

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.