【发布时间】:2012-11-13 23:00:58
【问题描述】:
基本上,我试图在一个排列整齐的列中输出一堆数字,格式如下:
$##,###.##
$##,###.##
使用以下代码
setlocale(LC_MONETARY, 'en_US.utf8');
money_format('%=0(#5.2n',$sum)
$sum 小于 1000 时除外。例如,使用
$sum=1550.00;
(如预期)上述代码输出
$01,550.00
然而,与
$sum=167.00;
上面的sn-p输出
$000167.00
这显然不是我需要的。根据documentation
即使填充字符是数字,分组分隔符也不会应用于填充字符。
所以,这是函数的预期行为。似乎没有意义,但这就是它的工作原理。
任何关于如何正确格式化填充数字的建议将不胜感激。
谢谢!
【问题讨论】:
-
如果您考虑到通常的填充字符是空格,则该函数完全有意义。我不建议使用零,也建议不要使用逗号或点作为分组分隔符——它们在世界的另一半很容易被误认为是小数分隔符。每个数字一个点或逗号 - 每个人都会将此作为小数分隔符。
-
谢谢你的建议,斯文。但是,这种格式是业务需求,我对输出时的外观没有发言权。它是应用程序的面向内部的部分,不会暴露给那些可能将逗号误认为点的人,反之亦然。另外,我明白你所说的关于以这种方式接近的功能是有意义的。尽管如此,我仍然需要更一致的外观行为,因此,这篇文章。
标签: php formatting numbers