string to int cast php change value

时间:2013-10-16 15:54:37

标签: php

$ms = microtime(true);
$ts = $ms * 10;
$i = substr($ts, 0,strpos($ts, "."));
echo "    A: ". $ms;
echo "    B: ". $ts;

echo "    C: ". $i; 
echo "    D: ". intval($i); 
echo "    E: ". (int)$i; 

示例:

  

A:1382292940.8799
  B:13822929408.799
  C:13822929408
  D:2147483647
  E:2147483647

但是

  

E = / = C&& D = / = C

为什么会这样?

1 个答案:

答案 0 :(得分:4)

你遇到的问题是溢出问题。 32位整数可容纳40亿,有些未签名,只有20亿,有些签名。您要转换为整数的数字远大于:

13,822,929,408

因此,您将看到2147483647,即32位有符号整数的限制。