integer は、Z = {..., -2, -1, 0, 1, 2, ...}という集合 です。
整数(integer)は、10進数(基底10)、16進数(基底16)、8進数(基底8)表記 で指定可能です。オプションで、符号(-または+)を前に付けることが可 能です。
8進数表記を使用する場合、数の前に0 (ゼロ)を付 ける必要があります。また、16進数表記を使用するには、数の前に 0xを付ける必要があります。
integer型の範囲外の数を指定した場合、かわりに floatとして解釈されます。また、結果が integer型の範囲外の数となるような計算を行うと floatが代わりに返されます。
$large_number = 2147483647; var_dump($large_number); // 出力: int(2147483647) $large_number = 2147483648; var_dump($large_number); // 出力: float(2147483648) // 指定した16進表現整数も出力 var_dump( 0x80000000 ); // 出力: float(2147483648) $million = 1000000; $large_number = 50000 * $million; var_dump($large_number); // 出力: float(50000000000) |
警告 |
不幸にして、スクリプトエンジンにはバグがあり、 負の数が含まれている場合に、 常に正しく動作するわけではありません。例えば、 -50000 * $millionを実行した場合、結果は、 -429496728となります。しかし、オペランドが共に 正の場合は問題ありません。 この問題はPHP 4.1.0で解決されました。 |
PHPには整数の割り算はありません。1/2は float型の0.5になります。
integerに値を明示的に変換するには、キャスト (int) または (integer)のど ちらかを使用して下さい。しかし、多くの場合、演算子、関数、制御構 造がboolean引数を必要とする場合、値は自動的に変換さ れるため、キャストを使用する必要はありません。
型の相互変換 を参照下さい。
FALSE は、0 (ゼロ)となり、 TRUE は、1となります。
floatから整数に変換する場合、その数はゼロの方に丸められます。
floatが整数の範囲(通常は +/- 2.15e+9 = 2^31)を越える場合、結果は undefined となります。これは、 そのfloatが正しい整数の結果を得るために十分な精度を得られなかっ たからです。この場合、警告も通知も発生しません!
警告 |
未知の端数をintegerにキャストしないで下さい。この 場合、予期しない結果となることがあります。 より詳細な情報については、 floatの精度に関する注意を参照下さい。 |
注意 |
整数への変換の動作は、他の型については定義されません。現在の 動作は、その値がまず 論理値に変換 された場合と同じです。しかし、この動作は予告なく変更 されることがありえるので、これを前提にしていはいけません。 |