将数字从字符串转换为 int 会更改 PHP 中的值


cast a number from string to int would change the value in php

我正在用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 编码字符串......