PHP number_format 显示不正确
Posted
技术标签:
【中文标题】PHP number_format 显示不正确【英文标题】:PHP number_format displaying incorrectly 【发布时间】:2014-09-18 05:00:57 【问题描述】:编程新手并参加 php 课程。我写了一个非常小的程序来测试 number_format 函数。这是我的代码:
$num = 9876543210123456789;
$result = number_format($num);
echo = $result;
输出为:9,876,543,210,123,456,512
我确定这与 $num 的长度有关。但一直无法找到发生这种情况的确切解释/原因。
【问题讨论】:
number_format — 格式化一个以千为单位的数字。那么什么是不正确的? 您对数字格式有什么期望?它是用小数位、千位和千位分隔符来格式化数字。请参考php手册。 本题与逗号无关,请再读一遍。他们感到困惑的是为什么输出数字与他们输入的数字不同。 【参考方案1】:您看到的数字不同,因为您提供的数字大到足以导致系统溢出。尝试使用较小的数字
<?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
【讨论】:
感谢您的回复。这正是我所想的。还要感谢您提供手册的链接。我应该先看看那里,但是,谢谢。【参考方案2】:您不能将大数传递给number_format()
函数。如果您只需要格式化数字,您可以编写自己的函数来用逗号分隔数字,以 3 乘 3。
原因是,如果你查看手册,数字格式将第一个参数作为浮点数。您需要对float
和ints
有一个很好的了解才能理解它发生的原因。
这是我在 SO 中发现的一些有趣的东西,它与您的问题相同,并且有一个很好的答案。请检查一下。
Why is my number value changing using number_format()?
【讨论】:
也谢谢你,非常有帮助。以上是关于PHP number_format 显示不正确的主要内容,如果未能解决你的问题,请参考以下文章
PHP number_format() 十进制 .99 变为 .00