文字列演算 (31ビット以上、51ビット以下の整数は float を使え!)

PHPの演算は、混乱する仕様だ。文字列で演算する場合、一度 float などに
型変換されているようだ。

PHP: 文字列の変換

文字列は、'.'、'e'、'E' のどれかが含まれている場合は float、それ以外は整数として評価されます。

と書かれているが、実際には 31ビットを超える正の整数を扱う場合も float として扱われる。

型の相互変換

PHP の自動型変換の例の一つは、加算演算子 '+' です。 オペランドのどれかが float の場合、全てのオペランドは float として評価され、結果は float になります。

そこで、float の仕様を確認してみる。

PHP: 浮動小数点数

float の大きさはプラットフォーム依存です。ただし、通常はおよそ 10 進数で 14 桁の精度があり、最大値は ~1.8e308 (これは 64ビット IEEE フォーマットです) となります。

ということで、「およそ 10 進数で 14 桁」(51ビット)までの整数は扱える。

http://ja.wikipedia.org/wiki/IEEE754