1

PHPホームページからマニュアルを読みました

それは書いています:

// this doesn't go for 
//hexadecimal specified integers above 2^32-1:

var_dump( 0x100000000 );

// output: int(2147483647)

しかし、それはint(4バイト)よりも大きい4.5バイトを持っているので、私はそれをテストします。

フロートを出力します。

なぜ矛盾するのか分かりませんか?

4

2 に答える 2

3

整数に関するPHPのマニュアルページから:「PHPが整数型の境界を超える数値を検出した場合、代わりに浮動小数点として解釈されます。また、整数型の境界を超える数値を生成する操作は、代わりにフロートします。」

integerタイプが小さすぎてその数値を表すことができないため、PHPは自動的にタイプをに変換し、データfloatが失われないようにします。これは予想される動作です。

しかし、あなたが引用した特定の例は、マニュアルでは明らかに間違っています。マニュアルの作成中に誰かがエラーを起こしたようです。または、マニュアルページが作成されてから、特大の16進リテラルの動作が変更された可能性があります。

于 2012-06-14T19:40:58.670 に答える
0

それは私のためにフロートを出力します:float(4294967296)

デモ:http ://codepad.org/otsGOiWf

于 2012-06-14T19:30:30.203 に答える