intermediate
Форматирование чисел
Форматируйте числа, валюту, проценты, единицы, разделители и правила округления по локали и бизнес-смыслу.
Форматирование чисел — группировка цифр, десятичные разделители, валюты, проценты и единицы по локали. Базовый API — `Intl.NumberFormat`; правила учёта (minor units, rounding) — из бизнес-требований.
new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(1234.5);
// "1.234,50 €"
new Intl.NumberFormat('en-US', { style: 'percent', maximumFractionDigits: 1 }).format(0.847);
// "84.7%"
| Вопрос | Заметка | |--------|---------| | Currency | ISO 4217; zero-decimal валюты (JPY) | | Rounding | Bankers vs away-from-zero — зафиксируйте политику | | Compact notation | `notation: 'compact'` для дашбордов | | Парсинг ввода | Locale-aware parser, не один `parseFloat` |
Не хардкодьте `,` или `.` как разделители тысяч/десятичных в общих компонентах.
На интервью: деньги в minor units; crypto vs fiat; согласованность SSR formatting; обновления CLDR в окружениях.
Типовые ошибки: float для денег; позиция символа валюты; server numbers с неверной locale header; неверное удаление разделителей перед parse.
Компромисс — простые шаблоны против корректного финансового и аналитического UI worldwide.
Чеклист:
- Формат с явной locale + currency/options.
- Деньги в minor units или decimal type с политикой.
- Парсинг locale-aware утилитами.
- Тест de-DE, en-US и одной RTL-локали.