Number Grouping Styles by Locale: Indian, Western, and East Asian
Explore how number digit grouping varies across locales. Learn about the Indian numbering system (lakhs/crores), Western thousands grouping, East Asian grouping, and how to control grouping in Intl.NumberFormat.
Detailed Explanation
Number Grouping Conventions Around the World
While most developers are familiar with the Western convention of grouping digits in threes (1,234,567), other numbering systems use different grouping patterns.
Western Grouping (Groups of 3)
new Intl.NumberFormat('en-US').format(12345678);
// "12,345,678"
new Intl.NumberFormat('de-DE').format(12345678);
// "12.345.678"
new Intl.NumberFormat('fr-FR').format(12345678);
// "12 345 678"
Indian Numbering System (Lakhs and Crores)
In the Indian numbering system, the first group is 3 digits, then groups of 2:
new Intl.NumberFormat('en-IN').format(12345678);
// "1,23,45,678"
new Intl.NumberFormat('hi-IN').format(12345678);
// "1,23,45,678"
This represents: 1 crore, 23 lakh, 45 thousand, 678.
| Western | Indian |
|---|---|
| 10,000 | 10,000 |
| 100,000 | 1,00,000 (1 lakh) |
| 1,000,000 | 10,00,000 (10 lakh) |
| 10,000,000 | 1,00,00,000 (1 crore) |
East Asian Grouping
Chinese, Japanese, and Korean traditionally group by 10,000 (万):
new Intl.NumberFormat('zh-CN').format(12345678);
// "12,345,678" (uses Western grouping in standard format)
// But compact notation uses 10,000-based grouping:
new Intl.NumberFormat('zh-CN', { notation: 'compact' })
.format(12345678); // "1235万"
new Intl.NumberFormat('ja-JP', { notation: 'compact' })
.format(12345678); // "1235万"
Controlling Grouping
// No grouping
new Intl.NumberFormat('en-US', { useGrouping: false })
.format(12345678); // "12345678"
// Minimum grouping (at least 2 digits in leading group)
new Intl.NumberFormat('en-US', { useGrouping: 'min2' })
.format(1234); // "1234" (leading group has only 1 digit)
new Intl.NumberFormat('en-US', { useGrouping: 'min2' })
.format(12345); // "12,345"
Separator Characters
| Locale | Thousands | Decimal |
|---|---|---|
| en-US | , (comma) | . (period) |
| de-DE | . (period) | , (comma) |
| fr-FR | (narrow space) | , (comma) |
| hi-IN | , (comma) | . (period) |
| ar-SA | ٬ | ٫ |
Use Case
Correct number grouping is critical for financial applications serving Indian users (lakhs and crores are deeply ingrained in Indian culture), dashboards displaying large numbers, and any application where misreading a number could have consequences. An Indian banking app must show account balances as '12,34,567.00' not '1,234,567.00'. Understanding grouping conventions prevents confusion when users from different regions read the same numbers.
Try It — Locale String Tester
Related Topics
Intl.NumberFormat Basics: Locale-Aware Number Formatting
Intl.NumberFormat
Currency Formatting by Locale with Intl.NumberFormat
Intl.NumberFormat
Compact Number Notation (1K, 1M, 1B) with Intl.NumberFormat
Intl.NumberFormat
Arabic and Hebrew RTL Number Formatting with Intl
Intl.NumberFormat
Unit Formatting with Intl.NumberFormat (Meters, Liters, Bytes)
Intl.NumberFormat