echo vs echo intval PHP

时间:2012-12-05 10:03:32

标签: php

请有人解释下面的结果差异

echo intval(1e10); 

输出1410065408

echo 1e10; 

输出10000000000

3 个答案:

答案 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位)计算机。