2

以下の結果の違いを説明してください

echo intval(1e10); 

出力 1410065408

echo 1e10; 

出力10000000000

4

3 に答える 3

5

符号付き整数には最大値があります。32 ビット システムでは、それは 2^16 または 2147483647intvalです。より大きな数を -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 に答える