Группировка разрядов

Механизм группировки разрядов в AutoNumeric отвечает за визуальное форматирование чисел с разделением тысяч, миллионов и более крупных порядков. Основная задача этого функционала — повысить читаемость числовых значений без изменения их фактической числовой природы. Внутреннее значение остаётся строго числовым, тогда как отображаемая строка модифицируется в соответствии с правилами локализации и конфигурации.

Базовый принцип форматирования

AutoNumeric применяет разделение разрядов к целой части числа, разбивая её на группы фиксированной длины. Наиболее распространённый вариант — группировка по три цифры, начиная справа:

1000 → 1,000
1000000 → 1,000,000
123456789 → 123,456,789

При этом библиотека отделяет отображение от внутреннего представления: пользователь видит форматированную строку, но API продолжает работать с числом без разделителей.

Основные параметры группировки

Ключевые настройки, влияющие на группировку разрядов:

digitGroupSeparator Определяет символ-разделитель между группами цифр.

Примеры значений:

  • , — англоязычный стандарт
  • . — европейский стиль
  • ' ' — пробел
  • '' — отключение группировки
new AutoNumeric('#input', {
    digitGroupSeparator: ','
});

digitalGroupSpacing Контролирует длину группировки. Наиболее часто используется значение 3, соответствующее классической триаде (тысячи, миллионы, миллиарды).

Допустимые режимы:

  • 3 — стандартная группировка по три цифры
  • альтернативные схемы (редко используемые в бизнес-логике и локализациях)
new AutoNumeric('#input', {
    digitGroupSeparator: ' ',
    digitalGroupSpacing: 3
});

overrideMinMaxLimits и косвенное влияние на форматирование Хотя параметр напрямую не управляет группировкой, при работе с ограничениями значений важно учитывать, что визуальное форматирование применяется уже после проверки диапазонов.

Локализационные схемы

AutoNumeric поддерживает преднастроенные локали, где группировка разрядов является частью комплексного числового формата.

Примеры различий:

  • США: 1,234,567.89
  • Германия: 1.234.567,89
  • Индия: 12,34,567.89

Индийская система группировки отличается нелинейной структурой: первая группа состоит из трёх цифр, далее идут группы по две цифры.

new AutoNumeric('#input', {
    digitGroupSeparator: ',',
    decimalCharacter: '.',
    digitalGroupSpacing: '2s'
});

Здесь '2s' задаёт специальную схему индийского формата.

Отключение группировки

В ряде сценариев требуется полностью убрать разделители разрядов. Это используется в технических полях, идентификаторах или при интеграции с внешними API, чувствительными к формату строки.

new AutoNumeric('#input', {
    digitGroupSeparator: '',
});

При отключении группировки число отображается как непрерывная последовательность символов без визуального разделения:

1000000 → 1000000

Поведение при вводе

Группировка применяется динамически во время ввода. Это означает, что после каждого изменения значения AutoNumeric пересчитывает позицию разделителей, сохраняя курсор в корректной позиции.

Особенности поведения:

  • разделители не мешают редактированию числа
  • вводимые цифры автоматически перераспределяются по группам
  • удаление символов не нарушает структуру форматирования

Влияние на арифметические операции

AutoNumeric всегда оперирует «чистым» числовым значением. Группировка разрядов не влияет на вычисления, так как:

  • внутреннее значение хранится как Number или строка без форматирования
  • форматирование применяется только при отображении
  • API (getNumericString, getNumber) возвращает неформатированные данные
const an = new AutoNumeric('#input', {
    digitGroupSeparator: ','
});

an.set(1000000);

console.log(an.getNumber()); // 1000000
console.log(an.getNumericString()); // "1000000"

Комбинация с десятичными настройками

Группировка разрядов работает совместно с настройками десятичной части:

new AutoNumeric('#input', {
    digitGroupSeparator: ' ',
    decimalCharacter: ',',
    decimalPlaces: 2
});

Результат:

1234567.89 → 1 234 567,89

Разделение логически разбивается на две независимые зоны:

  • целая часть → подчиняется правилам группировки
  • дробная часть → управляется количеством знаков и десятичным символом

Управление стилем отображения

Дополнительные параметры позволяют тонко настраивать внешний вид чисел:

  • визуальное подавление нулевых дробных значений
  • контроль поведения при частичном вводе числа
  • автоматическое восстановление формата после потери фокуса

Пример конфигурации, где группировка сочетается с адаптивным отображением:

new AutoNumeric('#input', {
    digitGroupSeparator: ',',
    decimalCharacter: '.',
    decimalPlaces: 2,
    emptyInputBehavior: 'zero'
});

Особенности производительности

При работе с большими массивами данных форматирование разрядов становится заметной операцией, так как включает:

  • разбиение строки на сегменты
  • пересборку строки при каждом изменении
  • управление позицией курсора

AutoNumeric оптимизирует процесс за счёт:

  • минимизации перерисовок
  • локального пересчёта только изменённой части
  • кэширования базовых настроек форматирования