我正在用PHP做一个项目,并尝试使用$_POST
中的一个参数,不幸的是,我想将结果发送到Web服务,该服务仅接受参数为整数。所以我必须用(int)
强制转换类型,但这项工作会改变参数的值例如,它是这样的:
$o = 4924869620;
$c = (int) $o;
则 C 将具有值629902324
为什么会发生这样的事情?我怎样才能保持值不变?我也用过intval()
,它也会改变值
我猜你是在 32 位系统上运行的,这意味着最大 int 将4294967295类型将其转换为浮动 instad:
$c = (float) $o;
整数范围从 −2.147.483.648 开始,到 2.147.483.647 结束 - 您的数字大于最大范围。请改用其他数据类型,例如浮点数。
浮点数的范围从 1.5E-45 开始到 3.4E38 ;o)
您的数字大于整数允许的数量。尝试将其转换为浮点数或双精度。
您应该尝试将其作为浮点数发送。如果不可能,您可以发送整数数组吗?(如果是这样,您可以将数字拆分为 4 字节块,并能够创建一个存储这些值的数组,而在另一端,您将能够基于此数组重新构建数字)
如上所述,
(float) $o;
as 4924869620 不是整数。但是,如果您要发布到服务器,则数据类型是否不相关,只是它只是数字数据,因为它只是一个无论如何都发送的 url 编码字符串......