money_format()

1. 定义

该函数将数字格式化为货币格式的字符串。 返回被格式化后的字符串。

注:

  • 该函数在 Windows 系统中无法使用。

2. 语法

money_format ( string $format , float $number ) : string

3. 参数说明

参数 可选性 数据类型 描述
$format 必需 字符串 参数格式,例如%i
$number 必需 浮点数 需要被格式化的数字

其中,$format由以下几部分组成:

  • 单个的%字符
  • 可选的标记(flags)
    • =f:用于数字填充,默认填充字符为空格
    • ^:禁用分组符号
    • + 或者 (:正负数格式。如果使用(,则会将负数使用圆括号包裹起来
    • !:不输出货币符号
    • -:输出时字段进行左对齐,默认为右对齐
  • 可选的字段宽度
    • w:十进制数值字符串的宽度,将右对齐,除非使用了-标记。默认为0
  • 可选的左侧精度
    • #n:小数点前的最大位数。如果实际位数大于n,此设置将忽略;如果小于n,将使用填充字符填满。为保证对齐,出现在数值之前或之后的字符,都会填充空格,以保证正负情况下长度一样
  • 可选的右侧精度
    • .p:小数点后的最大位数,会进行四舍五入格式化
  • 必选的单个转化字符
    • i:根据国际化区域设置中的货币格式,格式化数值
    • n:根据国际化区域设置中国家的货币格式,格式化数值
    • %:返回字符%

最后,locale设置中,LC_MONETARY会影响此函数的行为。在使用该函数前,首先要用setlocale()来设置合适的区域设置(locale)。

4. 示例

<?php

// money_format()
// 将数字格式化为货币格式的字符串

setlocale(LC_MONETARY, 'zh_CN');

$number = 1234.56789;
echo money_format('%i', $number),"\n";
echo money_format('%-9#6.2n', $number),"\n";// 设置为 9 位宽度、整数部分最大位 6 位、2 位小数,并设置 zh-CN 的货币格式

5. 延展阅读

  • setlocale():设置地区信息
  • sscanf():根据指定格式解析字符串
  • sprintf():返回被格式化后的字符串
  • printf():将字符串按某种特定格式输出。返回被格式化后的字符串长度
  • number_format():将一个数字以千位分隔符的方式格式化