2

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

echo intval(1e10); 

输出 1410065408

echo 1e10; 

输出10000000000

4

3 回答 3

5

有符号整数具有最大值。在 32 位系统上,即 2^16 或 2147483647。当intval-ing 一个更大的数字时,它会溢出。您找到的值也可以计算:

php > echo 1e10 % (2147483647);
1410065408
于 2012-12-05T10:17:16.203 回答
4

来自 PHP 手册:

最大值取决于系统。32 位系统的最大有符号整数范围为 -2147483648 到 2147483647。例如,在这样的系统上,intval('1000000000000') 将返回 2147483647。64 位系统的最大有符号整数值为 9223372036854775807。

intval 将截断数字

于 2012-12-05T10:07:29.430 回答
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 位)机器。

于 2012-12-05T10:26:02.337 回答