在PHP中,数字从19位变为指数

在PHP中,数字从19位变为指数,php,Php,在PHP中,我定义了一个长度为19位的变量,然后将其打印出来。但它变成了指数数,这在API使用中是不可接受的。我需要它作为号码。这是一个问题的例子 $a = 1435483000000072013; echo $a; adn它返回1.43548300001E+18 此外,我尝试了以下函数,但它返回了错误的号码 function output($x) { $f = sprintf('%0.08f', $x); $f = rtrim($f,'0'); $f = rtrim(

在PHP中,我定义了一个长度为19位的变量,然后将其打印出来。但它变成了指数数,这在API使用中是不可接受的。我需要它作为号码。这是一个问题的例子

$a = 1435483000000072013;
echo $a;
adn它返回
1.43548300001E+18

此外,我尝试了以下函数,但它返回了错误的号码

function output($x) {
    $f = sprintf('%0.08f', $x);
    $f = rtrim($f,'0');
    $f = rtrim($f,'.');
    return $f;
} 
echo output(1435483000000072013);
这将返回我的编号更改
1435483000071936


那么,这个问题的解决方案是什么呢?

您可以使用带有空字符串的number\u格式作为千位分隔符 e、 g


Champ,PHP没有严格类型化的变量,但在存储信息时,它仍然必须确定您的数字是int、float还是double。你的数字比INT_MAX大,所以它不适合整数格式。这意味着系统必须将其提升到至少一个浮点数,这就是指数格式的来源


请参阅NoGray的解决方案,了解如何修复它。您的数字仍在存储中,只是因为您的数字太大而以不同的方式表示。

如果数字太大,它将变为浮点数,并且精度将丢失。为什么不将其声明为字符串?
$a = 1.435483000000072013;
printf("%.18f",$a);
$a = 1.435483000000072013;
printf("%.18f",$a);