В библиотеке AutoNumeric основа форматирования чисел строится вокруг
управляемых правил разбиения целой части, знаков дроби, символов валют и
нормализации пользовательского ввода. При переходе к азиатским
региональным форматам основное отличие проявляется в логике группировки
разрядов, где стандартная западная модель 1,234,567.89
перестаёт быть универсальной.
В классическом варианте AutoNumeric использует параметр:
digitGroupSeparator — символ разделителя групп
разрядовdecimalCharacter — символ десятичного разделителяdecimalPlaces — количество знаков после запятойТипичная западная конфигурация:
{
digitGroupSeparator: ",",
decimalCharacter: ".",
decimalPlaces: 2
}
Однако азиатские форматы требуют иной логики представления чисел.
Индийский формат отличается нерегулярной группировкой:
Пример:
1,23,45,678 вместо 12,345,678AutoNumeric не предоставляет встроенного режима lakh/crore, поэтому используется один из двух подходов:
Форматирование выполняется перед передачей значения в AutoNumeric.
Пример функции:
function formatIndianNumber(value) {
const str = value.toString().replace(/\D/g, "");
const lastThree = str.slice(-3);
const otherNumbers = str.slice(0, -3);
if (otherNumbers !== "") {
return (
otherNumbers.replace(/\B(?=(\d{2})+(?!\d))/g, ",") +
"," +
lastThree
);
}
return lastThree;
}
Далее AutoNumeric работает уже с готовым отображаемым значением, при этом важно отключить повторное форматирование:
new AutoNumeric(element, {
digitGroupSeparator: ",",
decimalCharacter: ".",
modifyValueOnWheel: false
});
AutoNumeric хранит числовое значение отдельно от отображаемого. Это позволяет:
12345678В этом сценарии форматирование выполняется вне библиотеки, а AutoNumeric используется как слой контроля ввода.
В ряде восточноазиатских систем традиционно применяется группировка по 4 цифры (мириады):
1 2345 67891234 5678В веб-интерфейсах чаще используется один из упрощённых вариантов:
Самый распространённый подход:
{
digitGroupSeparator: "",
decimalCharacter: ".",
decimalPlaces: 0
}
В этом режиме число отображается непрерывной строкой:
123456789В интерфейсах, ориентированных на читаемость, используется пробел:
{
digitGroupSeparator: " ",
decimalCharacter: ".",
decimalPlaces: 2
}
Результат:
123 456 789Такой вариант чаще встречается в адаптированных международных интерфейсах, а не в чисто локальных стандартах.
При работе с многоязычными интерфейсами азиатские форматы часто комбинируются с переключением локали.
Типовая архитектура:
Пример переключения конфигурации:
const configs = {
us: {
digitGroupSeparator: ",",
decimalCharacter: ".",
decimalPlaces: 2
},
asiaPlain: {
digitGroupSeparator: "",
decimalCharacter: ".",
decimalPlaces: 2
},
asiaSpace: {
digitGroupSeparator: " ",
decimalCharacter: ".",
decimalPlaces: 2
}
};
Переключение экземпляра:
AutoNumeric.set(element, configs.asiaSpace);
При азиатских форматах критично поведение следующих аспектов:
Пользовательский ввод чаще всего осуществляется непрерывной строкой. AutoNumeric автоматически нормализует значение при потере фокуса.
Несмотря на региональные различия, в большинстве конфигураций
используется единый десятичный символ (.), чтобы избежать
конфликтов парсинга.
При работе с финансовыми данными используются:
{
minimumValue: "0",
maximumValue: "9999999999"
}
Основная сложность заключается в несоответствии визуального и числового представления.
Пример:
1,23,45,67812345678Поэтому критично разделение:
AutoNumeric обеспечивает это разделение через внутренний механизм хранения значения.
При передаче данных на сервер азиатские форматы не должны сохраняться в строковом виде.
Рекомендуемая схема работы:
getNumericString() или аналогичный метод
извлечения «сырого» значенияВ финансовых интерфейсах часто требуется совместное использование:
Пример конфигурации:
{
currencySymbol: "¥",
currencySymbolPlacement: "p",
digitGroupSeparator: " ",
decimalCharacter: ".",
decimalPlaces: 0
}
Особенность азиатских валютных интерфейсов заключается в частом отсутствии десятичных знаков, особенно для иеновых значений.
При работе с таблицами, содержащими тысячи строк, азиатские форматы с кастомной логикой группировки могут увеличивать нагрузку.
Оптимизация достигается через:
AutoNumeric нормализует вставляемые значения, однако при азиатских форматах важно учитывать:
На практике азиатские форматы в AutoNumeric сводятся к трём устойчивым конфигурациям:
Эти подходы обеспечивают совместимость библиотеки с различными региональными стандартами без изменения внутренней числовой модели данных.