请有人可以解释下面的结果差异
echo intval(1e10);
输出 1410065408
echo 1e10;
输出10000000000
有符号整数具有最大值。在 32 位系统上,即 2^16 或 2147483647。当intval
-ing 一个更大的数字时,它会溢出。您找到的值也可以计算:
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 位)机器。