135

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

4

8 回答 8

143

PHP 手册

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

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

于 2009-03-22T07:36:51.767 回答
97

PHP 的 32 位版本:

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

PHP 的 64 位版本:

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

数字包括在内。

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

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

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

于 2010-05-16T04:01:56.893 回答
24

PHP int 的大小取决于平台

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

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

于 2009-03-22T07:36:21.080 回答
17

(有点晚,但可能有用)

只信任PHP_INT_MAX 和 PHP_INT_SIZE,这个值因你的拱门(32/64 位)和你的操作系统而异......

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

于 2010-12-28T17:11:19.913 回答
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)
于 2009-03-22T07:36:16.807 回答
2

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

于 2009-03-22T07:36:50.317 回答
2

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

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

于 2019-06-29T13:14:42.443 回答
1

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

$x = 1;
while ($x > 0 && $x <<= 1);
echo "MIN: ", $x;
echo PHP_EOL;
echo "MAX: ", ~$x;
于 2019-03-15T17:22:53.693 回答