PHP/server不能处理大的数字


PHP/server can't handle large numbers?

我们正在使用一个支付API,它向我们发送一个客户令牌ID,然后我们可以访问API上的个人数据。

客户令牌ID的示例是9253691936959900,但是PHP将其转换为9.2536919369599E+15(例如)。显然,9.2536919369599E+15是一个科学计数法,对我们来说没有用,我们用它来调用API。

我们已经尝试了各种转换,如number_format(9.2536919369599E+15,16),但没有快乐。

我们使用的是32位服务器和PHP 5.4.15。

我们已经用尽了几乎所有的选择,甚至API的开发人员都在努力看到这个问题。他们确定客户令牌ID是作为字符串发送的,但由于某些原因,我们的系统将其解释为整数并将其转换为科学记数法。

任何帮助或建议将不胜感激。

Thanks a million:)

PHP限制最大整数为2^63-1 = 9223372036854775807(这适用于64位平台)。其他平台可能比这少得多)。

大于max的数将被转换为浮点数。

你有几个选择:

  1. 使用字符串作为ID
  2. 使用数量小于2^63
  3. 使用PHP GMP库。

如果您的API提供程序以JSON格式返回键:

$key = '{"key":999999999999999999999999999999999999999999999999999999}' ;
$a = json_decode($key, true, 2 , JSON_BIGINT_AS_STRING);
print $a['key'];

上面打印的结果是:99999999999999999999999999999999999999999999999999999999999999999999999999