🇫🇷

France Number Format

CLDR Locale:
ISO: FR / FRARegion: EuropeDigits: western

Try It — Live Preview

Number
1 234 567,89
Currency (EUR)
1 234 567,89 €
Percentage
1 234 568 %
Compact
1,2 M

Format Rules

Decimal Separator
,comma
Thousands Separator
·narrow no-break space
Grouping Pattern
3
Negative Format
-1 234 567,89
Currency Symbol
(EUR)
Currency Position
After number with space 1 234 567,89 €
Percent Position
After number with space 13 %
Zero
0,00
Compact
1,2 M

France formatting implementation notes

For France, format numbers with the explicit locale fr-FR; the reference value 1234567.89 renders as 1 234 567,89.

France's reference format uses "," as the decimal mark and a narrow non-breaking space (U+202F) for grouping. The integer uses repeating groups of three digits. Pass "fr-FR" directly to Intl.NumberFormat instead of replacing punctuation in a preformatted string.

EUR is shown with € after the amount with a separating space; the same reference value renders as 1 234 567,89 €. The percent sign appears after the amount with a separating space. Use the ISO currency code for storage and interchange because a visible symbol can be shared by unrelated currencies.

Western 0–9 digits are the page's reference digit system, and the negative pattern is -n. Treat fr-FR as the reference locale for this page, but still respect the user's explicitly selected language and numbering-system preferences. Validate output with formatToParts() when spacing, signs, or bidirectional literals affect the interface.

  • Locale: fr-FR
  • Decimal and grouping: 1 234 567,89
  • Currency: EUR → 1 234 567,89 €
  • Digits: Western 0–9 digits

Reviewed 19 July 2026. Sources: Unicode locale number formats · Intl.NumberFormat reference

Code Examples

// Basic number
new Intl.NumberFormat('fr-FR').format(1234567.89)
// → "1 234 567,89"

// Currency
new Intl.NumberFormat('fr-FR', {
  style: 'currency',
  currency: 'EUR'
}).format(1234567.89)
// → "1 234 567,89 €"

// Percentage
new Intl.NumberFormat('fr-FR', {
  style: 'percent',
  minimumFractionDigits: 1
}).format(0.125)

// Compact notation
new Intl.NumberFormat('fr-FR', {
  notation: 'compact'
}).format(1234567)

Negative Number Formats

Standard-1 234 567,89
new Intl.NumberFormat('fr-FR').format(-1234567.89)
Accounting style(1 234 567,89 €)
new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR', currencySign: 'accounting' }).format(-1234567.89)

Edge Cases & Notes

Thousands separator is U+202F NARROW NO-BREAK SPACE, not a regular space. This catches many developers off-guard.