3

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

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

那么 c 的值为 629902324

为什么会发生这种事情?我怎样才能保持价值不变?我也用过intval(),它也会改变价值

4

5 回答 5

5

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

$c = (float) $o;
于 2012-05-25T12:50:34.107 回答
4

整数范围从 -2.147.483.648 开始,到 2.147.483.647 结束 - 您的数字大于最大范围。请改用其他数据类型,例如浮点数。

浮点数的范围从 1.5E-45 开始到 3.4E38 ;o)

于 2012-05-25T12:48:25.890 回答
3

您的数字大于整数允许的数字。尝试将其转换为浮点数或双精度数。

于 2012-05-25T12:49:59.430 回答
2

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

于 2012-05-25T13:18:02.210 回答
0

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

于 2012-05-25T12:59:05.880 回答