echo vs echo intval PHP

Пожалуйста, может кто-нибудь объяснить различия в результатах ниже

echo intval(1e10); 

Выход 1410065408

 echo 1e10; 

Выход 10000000000

Максимальное значение имеет целое число со знаком. В 32-битных системах это 2 ^ 16 или 2147483647. Когда intval число больше, оно будет переполняться. Вы также можете оценить значение:

 php > echo 1e10 % (2147483647); 1410065408 

Из руководства PHP:

Максимальное значение зависит от системы. 32-битные системы имеют максимальный знаковый целочисленный диапазон от -2147483648 до 2147483647. Так, например, в такой системе intval ('1000000000000') вернет 2147483647. Максимальное знаковое целочисленное значение для 64-битных систем – 9223372036854775807.

intval усекает число

Код:

 <?php echo 'intval: ' . intval( 1e10 ) . PHP_EOL; echo '1e10: ' . 1e10 . PHP_EOL; 

Работает от cli

Вывод:

 intval: 10000000000 1e10: 10000000000 

Ubuntu 12.10 x64 php5.4

Другими словами, вы используете машину x86 (32 бит).