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());