is_int 関数を使用すると、決定する数値が 9 桁を超えると PHP が false を返します。なぜですか?
滿天的星座2017-05-16 13:06:03
。 。 。 。
Integer 整数型には範囲があり、この範囲はプラットフォームのバージョンに関係する 32 ビット (最大値: 2^31 - 1) や 64 ビット (最大値: 2^63 - 1) の範囲とは異なります。このとき、範囲外の数値はfloat型として解釈されるため、is_int()関数の判定はfalseとなります。 以下は64ビット整数のオーバーフローです。
リーリー
世界只因有你2017-05-16 13:06:03
PHP公式Webサイトのマニュアルによると:
整数の語長はプラットフォームに依存しますが、通常の最大値は約 20 億 (32 ビット符号付き) です。 64 ビット プラットフォームでの最大値は、通常 9E18 程度です。ただし、Windows 上の PHP 7 より前のバージョンは例外で、常に 32 ビットでした。 PHP は符号なし整数をサポートしていません。整数値の語長は定数 PHP_INT_SIZE で表すことができます。PHP 4.4.0 および PHP 5.0.5 以降では、PHP では最大値は定数 PHP_INT_MAX で表すことができ、最小値は定数 PHP_INT_MIN で表すことができます。 7.0.0 以降のバージョン。
つまり、符号付き 2^31=2147483648
の 32 ビット整数 (約 20 億) の場合、それは 10 桁の数値であるため、前述の状況では、9 桁を超えると false が返されるのは事実です。