从string转换为int的数字会改变php中的值

时间:2012-05-25 12:43:19

标签: php string casting integer

我正在使用PHP进行项目,并尝试使用$_POST中的一个参数,遗憾的是我想将结果发送到Web服务,该服务只接受整数参数。所以我必须使用(int)转换类型,但这项工作将改变参数的值 比如它是这样的:

$o =  4924869620;
$c = (int) $o;

然后c将具有值629902324

为什么会发生这件事?我怎样才能保持价值相同?我还使用了intval(),它也会更改值

5 个答案:

答案 0 :(得分:5)

我猜你是在32位系统上运行,这意味着最大的int将是4294967295 type将其转换为float instad:

$c = (float) $o;

答案 1 :(得分:4)

整数范围从-2.147.483.648开始,到2.147.483.647结束 - 您的数字大于最大范围。请改用另一种数据类型,例如float。

Float的范围从1.5E-45开始,到3.4E38; o)

答案 2 :(得分:3)

您的号码大于整数允许的数量。尝试将其作为浮点数或双精度投射。

答案 3 :(得分:2)

您应该尝试将其作为浮动发送。如果那不可能你发送一个整数数组? (如果是这样,您可以将数字拆分为4字节块,并且可以创建存储这些值的数组,而另一方面,您将能够根据此数组构建数字)

答案 4 :(得分:0)

如上所述,(float) $o;为4924869620不是整数。如果您要发布到服务器,但数据类型不相关,只是它只是数字数据,因为它只是一个被发送的url编码字符串...