intlNumber

intlNumber(value, options?) formats numeric values with locale-aware number patterns. Use this for price, percentage, metrics, compact values, and measurement units.

Native reference: Intl.NumberFormat

Signature

ts
1function intlNumber(2  value: number,3  options?: Intl.NumberFormatOptions & {4    locale?: string5    scope?: IntlRuntime6  }7): string

Invalid numbers return ''.

Option map

OptionTypeDefaultEffect
localestringruntime localeOne-off locale override
scopeIntlRuntimegetIntl()Use runtime locale
styledecimal | currency | percent | unitdecimalFormatter mode
currencystringundefinedRequired for style: 'currency'
unitstringundefinedRequired for style: 'unit'
unitDisplayshort | narrow | longshortUnit label size
currencyDisplaysymbol | code | name | narrowSymbolsymbolCurrency label form
signDisplayauto | always | never | exceptZeroautoSign behavior
minimumIntegerDigitsnumber1Integer width
minimumFractionDigitsnumberlocale defaultFraction floor
maximumFractionDigitsnumberlocale defaultFraction cap
minimumSignificantDigitsnumber1Min significant digits
maximumSignificantDigitsnumberlocale defaultMax significant digits
roundingPriorityauto | morePrecision | lessPrecisionautoPrecision control
roundingModeceil | floor | expand | trunc | halfCeil | halfFloor | halfExpand | halfEvenlocale defaultRounding behavior
roundingIncrement1 | 2 | 5 | ...1Rounding step
trailingZeroDisplayauto | stripIfIntegerautoStrip trailing zeros
notationstandard | scientific | engineering | compactstandardCompact/engineering mode
compactDisplayshort | longshortCompact output style
useGroupingboolean | 'auto' | 'always'trueGroup separator
numberingSystemstringruntime defaultDigit system

Examples

Common modes

ts
1intlNumber(1299.99, { locale: 'en-US' }) // "1,299.99"2intlNumber(1299.99, { locale: 'en-US', style: 'currency', currency: 'USD' })3intlNumber(0.42, { style: 'percent' })4intlNumber(1_234_567, { style: 'unit', unit: 'kilometer', unitDisplay: 'long' })

Precision control

ts
1intlNumber(1.2345, {2  maximumFractionDigits: 2,3  minimumFractionDigits: 2,4})5 6intlNumber(1500, { style: 'compact', compactDisplay: 'short' })7intlNumber(0, { notation: 'scientific' })

Signed values and locales

ts
1intlNumber(-12, { signDisplay: 'always' })2intlNumber(1_200.5, { locale: 'de-DE', style: 'currency', currency: 'EUR' })

Runtime-specific usage

ts
1import { createIntl, intlNumber } from '@beforesemicolon/intl'2 3const scoped = createIntl({ locale: 'ar-EG', messages: {} })4 5intlNumber(1299.99, { scope: scoped, style: 'currency', currency: 'EGP' })6intlNumber(1299.99, { scope: scoped, currency: 'EGP', style: 'currency' })

Empty/invalid output

ts
1intlNumber(NaN) // ''2intlNumber('12' as unknown as number) // ''

See also

edit this doc