我正在使用PHP进行项目,并尝试使用$_POST
中的一个参数,遗憾的是我想将结果发送到Web服务,该服务只接受整数参数。所以我必须使用(int)
转换类型,但这项工作将改变参数的值
比如它是这样的:
$o = 4924869620;
$c = (int) $o;
然后c将具有值629902324
为什么会发生这件事?我怎样才能保持价值相同?我还使用了intval()
,它也会更改值
答案 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编码字符串...