【问题标题】:money_format() optionsmoney_format() 选项
【发布时间】:2011-02-26 11:36:19
【问题描述】:

我正在查看 php 中的 money_format 函数,并且对如何让它以我想要的方式格式化感到困惑。我不想在字符串前面使用 USD,我希望每 3 位数字和 2 个小数点一个逗号,因此 12345.67 将被格式化为 $12,345.67

谢谢。

【问题讨论】:

    标签: php currency


    【解决方案1】:

    你看过number_format吗?我认为这更容易一些。

    例如print number_format( 1234567, 2, ",", "." );

    【讨论】:

    • 同意,我真的不知道他们为什么要创建money_format(),这就像一门外语。
    • 它是 C 的 strfmon 函数的包装器。对于习惯于其他语言(及其默认功能)的开发人员来说,这只是为 PHP 提供了一个简单的学习曲线的小东西之一。它实际上对于在您想要对齐的纯文本情况下格式化货币非常有用(就像 str_pad 可以做的那样)
    • 谢谢,我不得不切换 ,. 参数的位置以使其成为美国而不是欧洲风格。
    • 好答案 CharlesLeaf。与这个 lol 相比,money_format 对我来说毫无用处。
    【解决方案2】:

    要使用money_format 回答原始问题,很简单

    money_format('%.2n', 12345.67);
    

    money_format 总是以% 开头。 .2 表示您希望始终使用 2 位小数。如果您传递一个整数,它将在末尾添加 .00。 n 表示您要使用区域设置的国家货币格式。

    请务必注意,您必须正确设置区域设置,因为 money_format 是基于您为 LC_MONETARY 设置的区域设置。要设置区域设置,请使用setlocale。在这种情况下,您似乎想要en_US

    setlocale(LC_MONETARY, 'en_US.UTF-8');
    

    【讨论】:

    • 对于美国来说实际上是 en_US.UTF-8
    • 不知道为什么,但手册指出正确的方法是删除连字符,因此它应该显示为“en_US.UTF8”,它可能是不同的 php 版本,这是 php 7.##
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    相关资源
    最近更新 更多