🇿🇦

South Africa Number Format

CLDR Locale:
ISO: ZA / ZAFRegion: AfricaDigits: western

Try It — Live Preview

Number
1 234 567,89
Currency (ZAR)
R 1 234 567,89
Percentage
1 234 568%
Compact
1,2M

Format Rules

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

South Africa formatting implementation notes

For South Africa, format numbers with the explicit locale en-ZA; the reference value 1234567.89 renders as 1 234 567,89.

South Africa'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 "en-ZA" directly to Intl.NumberFormat instead of replacing punctuation in a preformatted string.

ZAR is shown with R immediately before the amount; the same reference value renders as R 1 234 567,89. The percent sign appears immediately after the amount. 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. This country is multilingual in software contexts: also test af-ZA, zu-ZA, because language selection can change spacing, punctuation, and currency display without changing the region. Validate output with formatToParts() when spacing, signs, or bidirectional literals affect the interface.

  • Locale: en-ZA
  • Decimal and grouping: 1 234 567,89
  • Currency: ZAR → R 1 234 567,89
  • Digits: Western 0–9 digits

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

What's different here

  • Decimal mark is a comma (,) (en-US uses a period (.)).
  • Thousands are grouped with a narrow no-break space (U+202F) (en-US uses a comma (,)).
  • No other page in this directory shares this exact number pattern.
  • Nearby differences: Nigeria (en-NG) uses a period (.) as the decimal mark instead of a comma (,) and groups with a comma (,) instead of a narrow no-break space (U+202F); Kenya (sw-KE) uses a period (.) as the decimal mark instead of a comma (,) and groups with a comma (,) instead of a narrow no-break space (U+202F); Ghana (ak-GH) uses a period (.) as the decimal mark instead of a comma (,) and groups with a comma (,) instead of a narrow no-break space (U+202F); Ethiopia (am-ET) uses a period (.) as the decimal mark instead of a comma (,) and groups with a comma (,) instead of a narrow no-break space (U+202F).
  • Currency: ZAR has ISO minor unit 2.
  • The grouping character is a narrow no-break space (U+202F), not a regular space. Normalise it before parsing user input or comparing strings.
  • Postal address order: name → building → street number + street → suburb → city → postcode → country. See address formats.

Reference value 1234567.89 in each locale

LocaleOutput
en-ZA1 234 567,89
af-ZA1 234 567,89
zu-ZA1,234,567.89

Rendered with the platform's CLDR data at build time.

Code Examples

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

// Currency
new Intl.NumberFormat('en-ZA', {
  style: 'currency',
  currency: 'ZAR'
}).format(1234567.89)
// → "R 1 234 567,89"

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

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

Negative Number Formats

Standard-1 234 567,89
new Intl.NumberFormat('en-ZA').format(-1234567.89)
Accounting style(R 1 234 567,89)
new Intl.NumberFormat('en-ZA', { style: 'currency', currency: 'ZAR', currencySign: 'accounting' }).format(-1234567.89)

Edge Cases & Notes

en-ZA uses comma as decimal — same as European format despite English language.