web-dev-qa-db-ja.com

PHPのintの最大値は何ですか?

非常に大きな数を扱うことができる特別なライブラリを無視して、PHPに保存できる最大のint値は何ですか?

104
nickf

PHPマニュアル から:

整数のサイズはプラットフォームに依存しますが、最大値である約20億が通常の値です(32ビットの符号付き)。 PHPは符号なし整数をサポートしていません。整数サイズは、定数PHP_INT_SIZEを使用して決定でき、最大値はPHP 4.4.0およびPHP 5.0.5以降の定数PHP_INT_MAXを使用して決定できます。

通常、64ビットプラットフォームの最大値は約9E18です。ただし、PHP 7より前のWindowsでは、常に32ビットでした。

109
karim79

PHPの32ビットビルド:

  • 整数は-2,147,483,648から2,147,483,647(〜±20億)までです

PHPの64ビットビルド:

  • 整数は-9,223,372,036,854,775,808から9,223,372,036,854,775,807(〜±9クインティリオン)まで

数字は包括的です。

注:一部の64ビットビルドは32ビット整数を使用していましたが、特に古いWindowsビルドのPHP

これらの範囲外の値は、これらの範囲内の非整数値と同様に、浮動小数点値で表されます。インタープリターは、計算の結果値を整数として表現できないかどうかに基づいて、この浮動小数点への切り替えが必要になるタイミングを自動的に決定します。

PHPは「符号なし」整数をサポートしていないため、すべての整数の最大値を「符号付き」整数の範囲に制限しています。

83
thomasrutter

PHP intsのサイズは プラットフォーム依存

整数のサイズはプラットフォームに依存しますが、最大値である約20億が通常の値です(32ビットの符号付き)。 PHPは符号なし整数をサポートしていません。整数サイズは、定数PHP_INT_SIZEを使用して決定でき、最大値はPHP 4.4.0およびPHP 5.0.5以降の定数PHP_INT_MAXを使用して決定できます。

PHP 6は「longs」(64ビットint)を追加します。

20
cletus

(少し遅れましたが、役に立つかもしれません)

PHP_INT_MAXおよびPHP_INT_SIZE のみを信頼します。この値はArch(32/64ビット)とOSによって異なります...

その他の「推測」または「ヒント」は偽である可能性があります。

15
Julien CROUZET

ああ、見つけた: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)
6
nickf

OSに依存しますが、 manual に従って、2147483647が通常の値です。

2
user57365

PHP_INT_*定数は非常に長い間存在します。負の数に達するまで左シフトすることで、同じMIN/MAX値をプログラムで見つけることができます。

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

PHPが実行されるサーバーのアーキテクチャに従います。64ビットの場合、

print PHP_INT_MIN . ", ” . PHP_INT_MAX;-9223372036854775808, 9223372036854775807を生成します

0
snr