在 PHP 中 int 的最大值是多少?

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

149485 次浏览

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

Http://au2.php.net/int

整数溢出

如果 PHP 遇到一个超出整数类型界限的数字,它将被解释为一个浮点数。另外,如果一个操作的结果超出了整数类型的界限,那么它将返回一个 float。

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


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

PHP int 的大小是 依赖平台:

整数的大小为 平台依赖,但最大 价值约二十亿元 通常值(32位有符号)。 PHP 不支持无符号 整数。整数大小可以是 用常数来确定 使用 PHP _ INT _ SIZE 和最大值 自 PHP 以来的常量 PHP _ INT _ MAX 4.4.0和 PHP 5.0.5。

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

它取决于你的操作系统,但是根据 手动操作,2147483647是通常的值。

来自 PHP 手册:

整数的大小为 平台依赖,但最大 价值约二十亿元 通常值(32位有符号)。 PHP 不支持无符号 整数。整数大小可以是 用常数来确定 使用 PHP _ INT _ SIZE 和最大值 自 PHP 以来的常量 PHP _ INT _ MAX 4.4.0和 PHP 5.0.5。

64位平台的最大值通常为9E18左右,但在 PHP 7之前的 Windows 平台上除外,因为 Windows 平台的最大值总是32位。

32位 PHP 构建:

  • 整数可以是从 -2,147,483,6482,147,483,647(~ & plusmn; 2billion)

64位 PHP 构建:

  • 整数可以是从 -9,223,372,036,854,775,8089223372036854775807(~ & plusmn; 9的10次方)

数字是包含在内的。

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

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

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

(有点晚,但可能有用)

只信任 PHP _ INT _ MAX 和 PHP _ INT _ SIZE,这个值在你的拱(32/64位)和你的操作系统上有所不同..。

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

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

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

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

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