PHP中int的最大值是多少?

Posted

技术标签:

【中文标题】PHP中int的最大值是多少?【英文标题】:What's the maximum value for an int in PHP? 【发布时间】:2010-10-14 19:33:04 【问题描述】:

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

【问题讨论】:

【参考方案1】:

来自PHP manual:

整数的大小是 平台相关,虽然最大 价值约 20 亿 通常的值(即 32 位有符号)。 PHP 不支持无符号 整数。整数大小可以 使用常数确定 PHP_INT_SIZE,最大值使用 自 PHP 以来的常量 PHP_INT_MAX 4.4.0 和 PHP 5.0.5。

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

【讨论】:

嗯,在 amd64 linux 上,现在很常见,它的 9223372036854775807 (2^63-1) 数字太多了——这是我在购买专用服务器时能想到的第一个选择 AMD 而不是 Intel 的原因。 :) @karim79,我认为这是由于拱门是 64 位的,而不是 AMD。 =] AMD64 是当今 AMD 和 Intel 使用的 64 位架构之一。它的其他名称包括 x64 和 Intel 64。正如 strager 所说,它与 AMD 无关 我的 windows XAMPP echo 的 2147483647 。我有 AMD Athlon X2【参考方案2】:

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 本身不支持“无符号”整数,将所有整数的最大值限制在“有符号”整数的范围内。

【讨论】:

有趣的是,在 32 位构建中,floats 可以将整数精度保持到比 ints 更高的值 - 浮点数可用于高达 2^53 + 1 的整数值,明显更高比 2^31 - 1 的整数。在 64 位版本中,这是相反的,因为浮点数具有相同的精度,但整数现在高达 2^63 - 1。【参考方案3】:

PHP int 的大小为platform dependent:

整数的大小是 平台相关,虽然最大 价值约 20 亿 通常的值(即 32 位有符号)。 PHP 不支持无符号 整数。整数大小可以 使用常数确定 PHP_INT_SIZE,最大值使用 自 PHP 以来的常量 PHP_INT_MAX 4.4.0 和 PHP 5.0.5。

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

【讨论】:

我没有得到这些反对意见。这是一个非常好的答案,即使添加了一些额外的信息。+1 来纠正它。 这个答案最初是“平台in依赖”(不依赖)。它还(仍然)声称在 PHP 6 之前不存在 64 位整数。这是错误的。 PHP 6 从未发生过,所以它有点无关紧要。 PHP 4 和 5 现在真的已经过时了,所以这是一个有争议的问题,但关键是 PHP 4 和 5 也有 64 位整数 - 这不是 PHP 6 中添加的东西,也不是任何 PHP 版本都有一种称为“long”的整数类型。整数类型只是依赖于平台。【参考方案4】:

(有点晚,但可能有用)

仅信任 PHP_INT_MAX and PHP_INT_SIZE,此值因您的架构(32/64 位)和您的操作系统而异...

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

【讨论】:

【参考方案5】:

啊,我找到了:232 - 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)

【讨论】:

这就是它在 32 位平台上的样子。还要考虑许多人在 64 位平台上运行服务器。【参考方案6】:

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

【讨论】:

具体看你是运行在32位平台还是64位平台。在大多数人运行 32 位服务器的世界中,32 位只是“常见的”。越来越多的情况并非如此。【参考方案7】:

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

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

【讨论】:

【参考方案8】:

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

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

【讨论】:

以上是关于PHP中int的最大值是多少?的主要内容,如果未能解决你的问题,请参考以下文章

c语言 int最大值是多少??

c语言 int最大值是多少??

MySQL数据库中 int 长度最大是多少?

32位操作系统int类型最大值是多少?

[转]MySQL中int(11)最大长度是多少?

int型整数的最小值和最大值是多少