Integer 整数型
整数は、集合 = {..., -2, -1, 0, 1, 2, ...} 内の数値です。
参照:
任意長整数/GMP
浮動小数点型
任意精度数学ライブラリ/BCMath
構文
整数値10 進数、16 進数、8 進数、またはオプションの記号 (- または +) が前に付くバイナリ表現。
整数のバイナリ表現は PHP 5.4.0 以降で利用可能です。
8進数表現を使用するには、数値の前に0(ゼロ)を追加する必要があります。 16 進数の表現を使用するには、数値の前に 0x を付ける必要があります。バイナリ表現を使用するには、数値の前に 0b を追加する必要があります。
例 #1 整数リテラル式
<?php $a = 1234; // 十进制数 $a = -123; // 负数 $a = 0123; // 八进制数 (等于十进制 83) $a = 0x1A; // 十六进制数 (等于十进制 26) ?>
整数の正式な説明は次のとおりです。 10進数: 0[xX][0-9a-fA-F]+
8進数: 0[0-7]+
2進数: 0b[01]+
整数: [+-]?10進数
| ?16 進数
16 進数。 64 ビット プラットフォームでの最大値は通常、9E18 程度です。 PHP は符号なし整数をサポートしていません。整数値の語長は定数 PHP_INT_SIZE で表すことができます。PHP 4.4.0 および PHP 5.0.5 以降では、最大値は定数 PHP_INT_MAX で表すことができます。
不正な数値 (つまり、8 または 9) が 8 進数に渡された場合、残りの桁は無視されます。
例 #2 8 進数に関する奇妙なこと
<?php var_dump(01090); // 八进制 010 = 十进制 8 ?>
整数オーバーフロー
指定された数値が integer の範囲を超える場合、それは float として解釈されます。同様に、演算結果が整数の範囲を超える場合は浮動小数点数が返されます。
例 #3 32 ビット システムでの整数オーバーフロー
<?php $large_number = 2147483647; var_dump($large_number); // int(2147483647) $large_number = 2147483648; var_dump($large_number); // float(2147483648) $million = 1000000; $large_number = 50000 * $million; var_dump($large_number); // float(50000000000) ?> Example #4 64 位系统下的整数溢出 <?php $large_number = 9223372036854775807; var_dump($large_number); // int(9223372036854775807) $large_number = 9223372036854775808; var_dump($large_number); // float(9.2233720368548E+18) $million = 1000000; $large_number = 50000000000000 * $million; var_dump($large_number); // float(5.0E+19) ?>
PHP には整数の除算演算子がありません。 1/2 は float 0.5 を生成します。値は、小数部分を破棄して整数にキャストすることも、round() 関数を使用して丸めを改善することもできます。
<?php var_dump(25/7); // float(3.5714285714286) var_dump((int) (25/7)); // int(3) var_dump(round(25/7)); // float(4) ?>
整数に変換する
値を明示的に整数に変換するには、 (int) または (integer) を使用してキャストします。ただし、演算子、関数、またはフロー制御で整数パラメーターが必要な場合、値は自動的に変換されるため、ほとんどの場合、キャストは必要ありません。関数 intval() を使用して値を整数に変換することもできます。
「型変換の識別」を参照してください。
ブール値
FALSE は 0 (ゼロ) を生成し、TRUE は 1 (1) を生成します。
浮動小数点からの変換
浮動小数点数から整数に変換する場合、切り捨てられます。
浮動小数点数が整数の範囲を超える場合 (通常、32 ビット プラットフォームでは +/- 2.15e+9 = 2^31、64 ビット プラットフォームでは +/- 9.22e+18 = 2^63) , 正確な整数の結果を得るには精度が不十分であるため、結果は未定義です。この場合、警告はなく、通知さえありません。
未知の分数を整数にキャストしないでください。予測できない結果が生じる可能性があります。
<?php echo (int) ( (0.1+0.7) * 10 ); // 显示 7! ?>
浮動小数点精度に関する警告を参照してください。
文字列から変換します
文字列を数値に変換するを参照してください。
他の型からの変換
注意