请有人解释下面的结果差异
echo intval(1e10);
输出1410065408
echo 1e10;
输出10000000000
答案 0 :(得分:5)
有符号整数具有最大值。在32位系统上,那是2 ^ 16或2147483647.当intval
- 一个更大的数字时,它会溢出。您找到的值也可以计算:
php > echo 1e10 % (2147483647);
1410065408
答案 1 :(得分:4)
来自PHP手册:
最大值取决于系统。 32位系统的最大有符号整数范围为-2147483648到2147483647.因此,例如在这样的系统上,intval('1000000000000')将返回2147483647.64位系统的最大有符号整数值为9223372036854775807。
intval会截断数字
答案 2 :(得分:0)
代码:
<?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位)计算机。