【问题标题】:string to int cast php change value [duplicate]字符串到int cast php更改值[重复]
【发布时间】:2013-10-16 15:54:36
【问题描述】:
$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; 

示例:

答:1382292940.8799
乙:13822929408.799
客服:13822929408
电话:2147483647
邮箱:2147483647

但是

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

为什么会这样?

【问题讨论】:

标签: php


【解决方案1】:

您遇到的问题是溢出问题。 32 位整数最多可容纳 40 亿个,有些是无符号的,只有 20 亿个,有些是有符号的。您要转换为整数的数字远大于此:

13,822,929,408

因此您会看到 2147483647,这是 32 位有符号整数的限制。

【讨论】:

  • $ts 正确显示的原因是 PHP 将其计算/存储为双精度浮点数。
猜你喜欢
  • 1970-01-01
  • 2018-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-06
  • 2018-02-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多