PHP number_format显示不正确

时间:2014-09-18 05:00:58

标签: php number-formatting

编程和参加PHP课程的新手。我写了一个非常小的程序来测试number_format函数。这是我的代码:

$num = 9876543210123456789; 
$result = number_format($num);
echo = $result;

输出为:9,876,543,210,123,456,512

我确定它与$ num的长度有关。但是未能找到确切的解释/原因。

2 个答案:

答案 0 :(得分:2)

您看到的号码不同,因为您提供的号码足以导致系统溢出。尝试使用较小的数字

<?php
$num = 9876543210123; 
$result = number_format($num);
echo  $result;                    // will show as expected, with formatting

即使您没有在该号码上使用number_format,您的号码仍会导致溢出。试试这个

$num = 9876543210123456789; 
echo  $num;   // not what you see above

另见:

What's the maximum size for an int in PHP?

PHP Integers and Overflow

答案 1 :(得分:1)

您无法将大号传递给number_format()函数。如果您只需要格式化数字,您可以编写自己的函数,用逗号分隔数字3乘3。

原因是如果您查看手册,数字格式将第一个参数作为浮点数。您需要对floatints有一个很好的理解,才能理解它为什么会发生。

这是我在SO中找到的一些有趣的东西,它与你的问题相同,并且它有一个很好的答案。请检查一下。

Why is my number value changing using number_format()?