Twig

灵活、快速且安全的
PHP 模板引擎

a Symfony Product
文档 过滤器 format_number
您正在阅读 Twig 3.x 的文档。切换到 Twig 1.x, 2.x 的文档。

问题 & 反馈

许可

Twig 文档 基于新 BSD 许可授权。

format_number

format_number 过滤器格式化数字

1
{{ '12.345'|format_number }}

您可以传递属性来调整输出

1
2
3
4
5
{# 12.34 #}
{{ '12.345'|format_number({rounding_mode: 'floor'}) }}

{# 1000000.0000 #}
{{ '1000000'|format_number({fraction_digit: 4}) }}

支持的选项列表

  • grouping_used: 指定是否使用千位分隔符

    1
    2
    {# 1,234,567.89 #}
    {{ 1234567.89|format_number({grouping_used:true}, locale='en') }}
  • decimal_always_shown: 指定是否始终显示小数部分,即使它为零

    1
    2
    {# 123. #}
    {{ 123|format_number({decimal_always_shown:true}, locale='en') }}
  • max_integer_digit:
  • min_integer_digit:
  • integer_digit: 定义整数部分的约束

    1
    2
    {# 345.679 #}
    {{ 12345.6789|format_number({max_integer_digit:3, min_integer_digit:2}, locale='en') }}
  • max_fraction_digit:
  • min_fraction_digit:
  • fraction_digit: 定义小数部分的约束

    1
    2
    {# 123.46 #}
    {{ 123.456789|format_number({max_fraction_digit:2, min_fraction_digit:1}, locale='en') }}
  • multiplier: 在格式化之前乘以该值

    1
    2
    {# 123,000 #}
    {{ 123|format_number({multiplier:1000}, locale='en') }}
  • grouping_size:
  • secondary_grouping_size: 设置主要和次要分组分隔符的大小

    1
    2
    {# 1,23,45,678 #}
    {{ 12345678|format_number({grouping_size:3, secondary_grouping_size:2}, locale='en') }}
  • rounding_mode:
  • rounding_increment: 控制舍入行为,以下是所有可用的 rounding_mode 列表
    • ceil: 向上取整
    • floor: 向下取整
    • down: 向零舍入
    • up: 远离零舍入
    • half_even: 将一半舍入到最接近的偶数整数
    • half_up: 将一半向上舍入
    • half_down: 将一半向下舍入
    1
    2
    {# 123.5 #}
    {{ 123.456|format_number({rounding_mode:'ceiling', rounding_increment:0.05}, locale='en') }}
  • format_width:
  • padding_position: 为格式化的数字设置宽度和填充,以下是所有可用的 padding_position 列表
    • before_prefix: 在货币符号前填充
    • after_prefix: 在货币符号后填充
    • before_suffix: 在后缀(货币符号)前填充
    • after_suffix: 在后缀(货币符号)后填充
    1
    2
    {# 123 #}
    {{ 123|format_number({format_width:10, padding_position:'before_suffix'}, locale='en') }}
  • significant_digits_used:
  • min_significant_digits_used:
  • max_significant_digits_used: 控制格式化中的有效数字

    1
    2
    {# 123.4568 #}
    {{ 123.456789|format_number({significant_digits_used:true, min_significant_digits_used:4, max_significant_digits_used:7}, locale='en') }}
  • lenient_parse: 如果为 true,则允许宽松解析输入

    1
    2
    {# 123 #}
    {{ 123|format_number({lenient_parse:true}, locale='en') }}

除了纯数字外,过滤器还可以格式化各种样式的数字

1
2
3
4
5
6
7
8
{# 1,234% #}
{{ '12.345'|format_number(style: 'percent') }}

{# twelve point three four five #}
{{ '12.345'|format_number(style: 'spellout') }}

{# 12 sec. #}
{{ '12'|format_duration_number }}

支持的样式列表

  • decimal:

    1
    2
    {# 1,234.568 #}
    {{ 1234.56789 | format_number(style='decimal', locale='en') }}
  • currency:

    1
    2
    {# $1,234.56 #}
    {{ 1234.56 | format_number(style='currency', locale='en') }}
  • percent:

    1
    2
    {# 12% #}
    {{ 0.1234 | format_number(style='percent', locale='en') }}
  • scientific:

    1
    2
    {# 1.23456789e+3 #}
    {{ 1234.56789 | format_number(style='scientific', locale='en') }}
  • spellout:

    1
    2
    {# one thousand two hundred thirty-four point five six seven eight nine #}
    {{ 1234.56789 | format_number(style='spellout', locale='en') }}
  • ordinal:

    1
    2
    {# 1st #}
    {{ 1 | format_number(style='ordinal', locale='en') }}
  • duration:

    1
    2
    {# 2:30:00 #}
    {{ 9000 | format_number(style='duration', locale='en') }}

作为快捷方式,您可以使用 format_*_number 过滤器,方法是将 * 替换为样式

1
2
3
4
5
{# 1,234% #}
{{ '12.345'|format_percent_number }}

{# twelve point three four five #}
{{ '12.345'|format_spellout_number }}

您可以传递属性来调整输出

1
2
{# 12.3% #}
{{ '0.12345'|format_percent_number({rounding_mode: 'floor', fraction_digit: 1}) }}

默认情况下,过滤器使用当前区域设置。您可以显式传递它

1
2
{# 12,345 #}
{{ '12.345'|format_number(locale: 'fr') }}

注意

format_number 过滤器是 IntlExtension 的一部分,默认情况下未安装。请先安装它

1
$ composer require twig/intl-extra

然后,在 Symfony 项目上,安装 twig/extra-bundle

1
$ composer require twig/extra-bundle

否则,在 Twig 环境中显式添加扩展

1
2
3
4
use Twig\Extra\Intl\IntlExtension;

$twig = new \Twig\Environment(...);
$twig->addExtension(new IntlExtension());

参数

  • locale: 区域设置代码,如 RFC 5646 中定义
  • attrs: 属性映射
  • style: 数字输出的样式