非常に大きな数を扱うことができる特別なライブラリを無視すると、PHP に格納できる最大の int 値はいくつになるでしょうか?
8 に答える
PHPマニュアルから:
整数のサイズはプラットフォームに依存しますが、最大値は約 20 億が通常の値です (符号付き 32 ビット)。PHP は符号なし整数をサポートしていません。PHP 4.4.0 および PHP 5.0.5 以降では、整数サイズは定数 PHP_INT_SIZE を使用して決定でき、最大値は定数 PHP_INT_MAX を使用して決定できます。
通常、64 ビット プラットフォームの最大値は約 9E18 ですが、PHP 7 より前の Windows では常に 32 ビットでした。
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 は「符号なし」整数自体をサポートしていないため、すべての整数の最大値を「符号付き」整数の範囲に制限しています。
PHP int のサイズはプラットフォームに依存します:
整数のサイズはプラットフォームに依存しますが、最大値は約 20 億が通常の値です (符号付き 32 ビット)。PHP は符号なし整数をサポートしていません。PHP 4.4.0 および PHP 5.0.5 以降では、整数サイズは定数 PHP_INT_SIZE を使用して決定でき、最大値は定数 PHP_INT_MAX を使用して決定できます。
PHP 6 は「long」(64 ビット整数) を追加します。
(少し遅いですが、役に立つかもしれません)
PHP_INT_MAX と PHP_INT_SIZEのみを信頼してください。この値はアーキテクチャ (32/64 ビット) と OS によって異なります...
他の「推測」または「ヒント」は誤りである可能性があります。
あ、見つけた: 2 32 - 1 (2147483647)
整数オーバーフロー
PHP が整数型の境界を超える数値を検出すると、代わりに float として解釈されます。また、整数型の境界を超える数値になる操作は、代わりに float を返します。
<?php
$large_number = 2147483647;
var_dump($large_number);
// output: int(2147483647)
$large_number = 2147483648;
var_dump($large_number);
// output: float(2147483648)
OSにもよりますが、マニュアルによると2147483647が通常の値です。