Форматирование чисел
КонвертацияФорматирование чисел через Intl.NumberFormat — разделители тысяч, научная нотация, точность и валюта для любой локали.
На этой странице
Что такое форматирование чисел?#
Одно и то же число в разных местах записывается по-разному. 1234567.89 в английском США — это 1,234,567.89; в немецком — 1.234.567,89 (точки и запятые меняются ролями); в хинди — 12,34,567.89 (группировка по лакхам, то есть по две цифры, а не по три тысячи); в компактном английском оно сжимается до 1.23M. Ни один из этих вариантов не является «ошибочным» — каждый соответствует принятой в регионе конвенции, и правильно её соблюсти важно для чеков, дашбордов и любой цифры, которую читает человек.
Эта страница — живой интерфейс к нативному Intl.NumberFormat браузера, тому же движку, что используют продакшен-приложения. Вы даёте сырьевое число и выбираете стиль (обычное десятичное, валюта или процент), нотацию (стандартная, научная, инженерная или компактная), локаль, границы числа дробных цифр и переключатель разделителя тысяч. Мгновенно получается корректно локализованная строка, без самописных таблиц разделителей, которые устаревают.
Как пользоваться#
- Введите Значение (при загрузке
1234567.89). Работают и обычные десятичные дроби, и научная нотация вроде1.23e5; сгруппированный ввод вроде1,000намеренно отвергается, чтобы неоднозначный текст никогда не переформатировался молча. - Выберите Стиль: десятичный (обычное число), валюта (раскрывает выбор валюты — USD, EUR, GBP, JPY, CNY, INR и др., все коды ISO 4217) или процент (умножает на 100 и добавляет знак процента для выбранной локали).
- Выберите Нотацию: стандартная, научная (
1.23E6), инженерная (порядок всегда кратен трём) или компактная (1.23M,1.23亿). - Выберите Локаль из репрезентативного списка (en-US, zh-CN, de-DE, hi-IN, ja-JP …). Вывод мгновенно перерисовывается при изменении.
- Настройте Мин. цифр / Макс. цифр (0–20) и чекбокс Разделитель тысяч (включён или выключен). Поле Вывод обновляется вживую; Копировать забирает результат.
Ключевые возможности#
- Нативный
Intl. Используется тот жеIntl.NumberFormat, что поставляется в вашей среде, поэтому вывод совпадает с тем, что выдаёт реальное локализованное приложение, — без сторонних библиотек форматирования и без устаревших справочников. - Корректная группировка по локали. Поддерживаются западная группировка тысяч (
1,234,567), индийская группировка лакхов (12,34,567), китайская четырёхзначная (123,4567) и обмен.и,в немецком — автоматически после выбора локали. - Компактная и инженерная нотации. Компактная сжимает большие значения до
1.23M/1.23B(или123万/12亿в CJK-локализованных); инженерная держит порядок кратным трём, что опрятно совмещается с приставками СИ. - Валюта и процент встроены. Валюта принимает любой код ISO 4217 и ставит символ/обозначение там, где его ждёт локаль (до или после цифр); процент применяет собственный знак и интервалы локали.
- Управление числом дробных цифр. Зафиксируйте минимум и максимум дробных цифр (0–20), чтобы принудительно выводить завершающие нули или ограничить «шумные» знаки — те же рычаги, что предоставляет
Intl.NumberFormat.
Разбор примера#
Со значением по умолчанию 1234567.89, стиль десятичный, нотация стандартная, разделитель включён, меняйте только Локаль и наблюдайте смену разделителей:
en-US: 1,234,567.89
de-DE: 1.234.567,89
hi-IN: 12,34,567.89
В немецкой строке . и , меняются местами относительно американской. В строке хинди последние шесть цифр сгруппированы как 12,34,567 — лакх равен ста тысячам, поэтому индийская конвенция группирует по схеме 2-2-3 справа, а не 3-3-3. Оба варианта корректны для своих локалей; самописный форматировщик обычно один из них делает неправильно.
Теперь переключите нотацию на компактную, и то же значение сожмётся:
en-US: 1.23M
zh-CN: 123.46万
ja-JP: 123万
Английский использует SI-образную M (миллион); китайский и японский — родную единицу 万 (десять тысяч), поэтому 1 234 567 превращается в «123,46 десятков тысяч», а не в «1,23 миллиона». Та же величина, четыре культурно ожидаемых представления.
FAQ#
Почему сгруппированный ввод вроде 1,000 отвергается?#
Потому что запятая неоднозначна: в en-US это разделитель тысяч, а в de-DE — десятичная точка. Принять её означало бы молчаливо угадывать локаль входа. Вместо этого инструмент берёт сырое числовое значение и применяет группировку выбранной локали на выходе — однозначно в обе стороны.
Почему компактный режим показывает 1.23M в английском, но 123.46万 в китайском?#
Потому что компактная нотация использует собственные слова порядка величины для каждой локали. Английский считает тысячами, миллионами, миллиардами (степени 1000); китайский и японский — 万 (десять тысяч) и 亿 (сто миллионов), то есть степени 10 000. Лежащее в основе число одинаково; различается только привычная единица группировки.
Когда нужна инженерная нотация вместо научной?#
Обе представляют число как мантиссу, умноженную на степень десяти, но инженерная заставляет порядок быть кратным трём (1,234567 × 10⁶, а не 1,234567 × 10⁶-с-копейками), что напрямую ложится на приставки СИ (кило, мега, гига…). Используйте её, когда вывод стоит рядом с физическими единицами; научная подходит, когда нужен просто компактный нормированный вид.
Конвертирует ли режим валюты курсы обмена?#
Нет. Режим валюты только форматирует — он записывает 1234.56 как $1,234.56 (en-US) или 1.234,56 € (de-DE), используя расположение символа для локали. USD в EUR он не переводит. Курсы меняются ежеминутно и потребовали бы живого потока данных, которым эта страница намеренно не располагает.