PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` Babel: Number Formatting

Number Formatting

Contents

Support for locale-specific formatting and parsing of numbers is provided by the babel.numbers module:

System Message: ERROR/3 (doc/numbers.txt, line 16)

Unknown directive type "code-block".

.. code-block:: pycon

    >>> from babel.numbers import format_number, format_decimal, format_percent

Examples:

System Message: ERROR/3 (doc/numbers.txt, line 22)

Unknown directive type "code-block".

.. code-block:: pycon

    >>> format_decimal(1.2345, locale='en_US')
    u'1.234'
    >>> format_decimal(1.2345, locale='sv_SE')
    u'1,234'
    >>> format_decimal(12345, locale='de_DE')
    u'12.345'


1   Pattern Syntax

While Babel makes it simple to use the appropriate number format for a given locale, you can also force it to use custom patterns. As with date/time formatting patterns, the patterns Babel supports for number formatting are based on the Locale Data Markup Language specification (LDML).

Examples:

System Message: ERROR/3 (doc/numbers.txt, line 42)

Unknown directive type "code-block".

.. code-block:: pycon

    >>> format_decimal(-1.2345, format='#,##0.##;-#', locale='en')
    u'-1.23'
    >>> format_decimal(-1.2345, format='#,##0.##;(#)', locale='en')
    u'(1.23)'

The syntax for custom number format patterns is described in detail in the the specification. The following table is just a relatively brief overview.

Symbol Description
0 Digit
1-9 '1' through '9' indicate rounding.
@ Significant digit
# Digit, zero shows as absent
. Decimal separator or monetary decimal separator
- Minus sign
, Grouping separator
E Separates mantissa and exponent in scientific notation
+ Prefix positive exponents with localized plus sign
; Separates positive and negative subpatterns
% Multiply by 100 and show as percentage
Multiply by 1000 and show as per mille
¤ Currency sign, replaced by currency symbol. If doubled, replaced by international currency symbol. If tripled, uses the long form of the decimal symbol.
' Used to quote special characters in a prefix or suffix
* Pad escape, precedes pad character

2   Parsing Numbers

Babel can also parse numeric data in a locale-sensitive manner:

System Message: ERROR/3 (doc/numbers.txt, line 96)

Unknown directive type "code-block".

.. code-block:: pycon

    >>> from babel.numbers import parse_decimal, parse_number

Examples:

System Message: ERROR/3 (doc/numbers.txt, line 102)

Unknown directive type "code-block".

.. code-block:: pycon

    >>> parse_decimal('1,099.98', locale='en_US')
    1099.98
    >>> parse_decimal('1.099,98', locale='de')
    1099.98
    >>> parse_decimal('2,109,998', locale='de')
    Traceback (most recent call last):
      ...
    NumberFormatError: '2,109,998' is not a valid decimal number

Note

Number parsing is not properly implemented yet