Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP数字\返回错误数字的格式_Php_Number Formatting - Fatal编程技术网

PHP数字\返回错误数字的格式

PHP数字\返回错误数字的格式,php,number-formatting,Php,Number Formatting,目前我有一个19位数的数字,当我试着打印出来时,它会给我一个科学的符号,这正是我不需要的,因为这是一个特定的ID而不是一个数字 我通过使用数字\格式抵消了这一点,但是使用了大数字,因为我正在处理的数字和处理量增加了加载时间,并且最后4位数字不正确。我的环境有限,因此无法加载其他模块,我的最佳选择是什么 举个例子: $cid = 8162315223029015401; $cid1 = sprintf($cid); $cid2 = number_format($cid, 0, '.', '');

目前我有一个19位数的数字,当我试着打印出来时,它会给我一个科学的符号,这正是我不需要的,因为这是一个特定的ID而不是一个数字

我通过使用数字\格式抵消了这一点,但是使用了大数字,因为我正在处理的数字和处理量增加了加载时间,并且最后4位数字不正确。我的环境有限,因此无法加载其他模块,我的最佳选择是什么

举个例子:

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

>> double
>> 8.162315223029E+18
>> 8162315223029015552
提前谢谢

谢谢各位,问题是x32系统的最大长度

使用字符串; $cid=8162315223029015401

使用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

您的预期格式是什么?echo的预期输出应为8162315223029015401,我正在页面上显示此数据。number_格式预期其第一个参数为浮点值,这意味着您正在破坏int.32位或64位PHP?使用sprintf处理浮点问题(如显示指数值)更好!!没关系。数字\格式需要一个浮点数。输入一个int或int作为字符串只会使数字浮点数,并损坏不太重要的数字。数据来自一个对象,使用settype$cid,字符串仍然会产生一个科学符号,有什么想法吗?但它只需要打印出来,这样我们就可以省去数字格式了?否则我就不能正确理解这个问题。PHP在处理这些大整数时存在一个问题,这取决于您是在32位还是64位操作系统上。有关更多信息,请参阅。