The Intl.NumberFormat()
constructor creates objects that enable language sensitive number formatting.
new Intl.NumberFormat([locales[, options]])
locales
Optional
A string with a BCP 47 language tag, or an array of such strings. For the general form and interpretation of the locales
argument, see the Intl page. The following Unicode extension key is allowed:
nu
adlm
", "ahom
", "arab
", "arabext
", "bali
", "beng
", "bhks
", "brah
", "cakm
", "cham
", "deva
", "diak
", "fullwide
", "gong
", "gonm
", "gujr
", "guru
", "hanidec
", "hmng
", "hmnp
", "java
", "kali
", "khmr
", "knda
", "lana
", "lanatham
", "laoo
", "latn
", "lepc
", "limb
", "mathbold
", "mathdbl
", "mathmono
", "mathsanb
", "mathsans
", "mlym
", "modi
", "mong
", "mroo
", "mtei
", "mymr
", "mymrshan
", "mymrtlng
", "newa
", "nkoo
", "olck
", "orya
", "osma
", "rohg
", "saur
", "segment
", "shrd
", "sind
", "sinh
", "sora
", "sund
", "takr
", "talu
", "tamldec
", "telu
", "thai
", "tibt
", "tirh
", "vaii
", "wara
", "wcho
". — see the standard Unicode numeral systems list.options
Optional
An object with some or all of the following properties:
compactDisplay
notation
is "compact
". Takes either "short
" (default) or "long
".currency
USD
" for the US dollar, "EUR
" for the euro, or "CNY
" for the Chinese RMB — see the Current currency & funds code list. There is no default value; if the style
is "currency
", the currency
property must be provided.currencyDisplay
symbol
" to use a localized currency symbol such as €, this is the default value,narrowSymbol
" to use a narrow format symbol ("$100" rather than "US$100"),code
" to use the ISO currency code,name
" to use a localized currency name such as "dollar
",currencySign
currencySign
option to "accounting
". The default value is "standard
".localeMatcher
lookup
" and "best fit
"; the default is "best fit
". For information about this option, see the Intl page.notation
standard
" standard
" plain number formattingscientific
" return the order-of-magnitude for formatted number.engineering
" return the exponent of ten when divisible by threecompact
" string representing exponent, defaults is using the "short" form.numberingSystem
arab
", "arabext
", " bali
", "beng
", "deva
", "fullwide
", " gujr
", "guru
", "hanidec
", "khmr
", " knda
", "laoo
", "latn
", "limb
", "mlym
", " mong
", "mymr
", "orya
", "tamldec
", " telu
", "thai
", "tibt
".signDisplay
auto
" auto
" sign display for negative numbers onlynever
" never display signalways
" always display signexceptZero
" sign display for positive and negative numbers, but not zerostyle
decimal
". decimal
" for plain number formatting.currency
" for currency formatting.percent
" for percent formattingunit
" for unit formattingunit
unit
formatting, Possible values are core unit identifiers, defined in UTS #35, Part 2, Section 6. A subset of units from the full list was selected for use in ECMAScript. Pairs of simple units can be concatenated with "-per-
" to make a compound unit. There is no default value; if the style
is "unit
", the unit
property must be provided.unitDisplay
unit
formatting, the defaults is "short
". long
" (e.g., 16 litres
)short
" (e.g., 16 l
)narrow
" (e.g., 16l
)useGrouping
The following properties fall into two groups: minimumIntegerDigits
, minimumFractionDigits
, and maximumFractionDigits
in one group, minimumSignificantDigits
and maximumSignificantDigits
in the other. If at least one property from the second group is defined, then the first group is ignored.
minimumIntegerDigits
minimumFractionDigits
maximumFractionDigits
minimumFractionDigits
and 3; the default for currency formatting is the larger of minimumFractionDigits
and the number of minor unit digits provided by the ISO 4217 currency code list (2 if the list doesn't provide that information); the default for percent formatting is the larger of minimumFractionDigits
and 0.minimumSignificantDigits
maximumSignificantDigits
In basic use without specifying a locale, a formatted string in the default locale and with default options is returned.
let amount = 3500; console.log(new Intl.NumberFormat().format(amount)); // → '3,500' if in US English locale
let amount = 3500; new Intl.NumberFormat('en-US', {style: 'decimal'}).format(amount); // → '3,500' new Intl.NumberFormat('en-US', {style: 'percent'}).format(amount); // → '350,000%'
If the style
is 'unit'
, a unit
property must be provided. Optionally, unitDisplay
controls the unit formatting.
let amount = 3500; new Intl.NumberFormat('en-US', {style: 'unit', unit: 'liter'}).format(amount); // → '3,500 L' new Intl.NumberFormat('en-US', {style: 'unit', unit: 'liter', unitDisplay: 'long'}).format(amount); // → '3,500 liters'
If the style
is 'currency'
, a currency
property must be provided. Optionally, currencyDisplay
and currencySign
control the unit formatting.
let amount = -3500; new Intl.NumberFormat('en-US', {style: 'currency', currency: 'USD'}).format(amount); // → '-$3,500.00' new Intl.NumberFormat('bn', { style: 'currency', currency: 'USD', currencyDisplay: 'name' }).format(amount); // → '-3,500.00 US dollars' new Intl.NumberFormat('bn', { style: 'currency', currency: 'USD', currencySign: 'accounting' }).format(amount); // → '($3,500.00)'
Scientific and compact notation are represented by the notation
option and can be formatted like this:
new Intl.NumberFormat('en-US', { notation: "scientific" }).format(987654321); // → 9.877E8 new Intl.NumberFormat('pt-PT', { notation: "scientific" }).format(987654321); // → 9,877E8 new Intl.NumberFormat('en-GB', { notation: "engineering" }).format(987654321); // → 987.654E6 new Intl.NumberFormat('de', { notation: "engineering" }).format(987654321); // → 987,654E6 new Intl.NumberFormat('zh-CN', { notation: "compact" }).format(987654321); // → 9.9亿 new Intl.NumberFormat('fr', { notation: "compact", compactDisplay: "long" }).format(987654321); // → 988 millions new Intl.NumberFormat('en-GB', { notation: "compact", compactDisplay: "short" }).format(987654321); // → 988M
Display a sign for positive and negative numbers, but not zero:
new Intl.NumberFormat("en-US", { style: "percent", signDisplay: "exceptZero" }).format(0.55); // → '+55%'
Note that when the currency sign is "accounting", parentheses might be used instead of a minus sign:
new Intl.NumberFormat('bn', { style: 'currency', currency: 'USD', currencySign: 'accounting', signDisplay: 'always' }).format(-3500); // → '($3,500.00)'
Specification |
---|
ECMAScript Internationalization API (ECMA-402) The definition of 'Intl.NumberFormat constructor' in that specification. |
Desktop | ||||||
---|---|---|---|---|---|---|
NumberFormat() constructor |
24 | 12 | 29 | 11 | 15 | 10 |
compactDisplay option |
77 | 79 | 78 | No | 64 | No |
currencySign option |
77 | 79 | 78 | No | 64 | No |
notation option |
77 | 79 | 78 | No | 64 | No |
signDisplay option |
77 | 79 | 78 | No | 64 | No |
unit option |
77 | 79 | 78 | No | 64 | No |
unitDisplay option |
77 | 79 | 78 | No | 64 | No |
Mobile | ||||||
---|---|---|---|---|---|---|
NumberFormat() constructor |
4.4 | 25 | 56 | 14 | 10 | 1.5 |
compactDisplay option |
77 | 77 | No | 55 | No | 12.0 |
currencySign option |
77 | 77 | No | 55 | No | 12.0 |
notation option |
77 | 77 | No | 55 | No | 12.0 |
signDisplay option |
77 | 77 | No | 55 | No | 12.0 |
unit option |
77 | 77 | No | 55 | No | 12.0 |
unitDisplay option |
77 | 77 | No | 55 | No | 12.0 |
Server | |
---|---|
NumberFormat() constructor |
13.0.0
|
compactDisplay option |
12.11.0 |
currencySign option |
12.11.0 |
notation option |
12.11.0 |
signDisplay option |
12.11.0 |
unit option |
12.11.0 |
unitDisplay option |
12.11.0 |
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://wiki.developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat