PHP number_format返回错误的数字

时间:2014-03-11 13:24:33

标签: php number-formatting

目前我有一个长度为19位的数字,当我尝试将其打印出来时,它给了我科学记数法,这正是我不需要的,因为这是一个特定的ID而不是数字。

我通过使用number_format()来抵消这种情况,但由于处理数量和处理量,我正在做的加载时间已经上升,而后4位数字不正确。我的环境有限,因此可能无法在其他模块中加载,这是我最好的选择吗?

仅举个例子:

$cid = 8162315223029015401;
$cid1 = sprintf($cid);
$cid2 = number_format($cid, 0, '.', '');
echo gettype($cid);
echo $cid1;
echo $cid2;

>> double
>> 8.162315223029E+18
>> 8162315223029015552

提前致谢!

谢谢大家,问题是x32系统上的最大长度。 Is there any way to maximize PHP_INT_MAX?

2 个答案:

答案 0 :(得分:0)

使用字符串; $cid = "8162315223029015401";

答案 1 :(得分:0)

使用sprintf:

$cid = 8162315223029015401;
$cid1 = sprintf("%.8f", $cid);
$cid2 = number_format($cid, 0, '.', '');
echo gettype($cid) . PHP_EOL;
echo $cid1 . PHP_EOL;
echo $cid2 . PHP_EOL;

输出:

integer
8162315223029015552.00000000
8162315223029015552