Ошибка глобализации в новой версии 1.2.1? Анализ определенных чисел возвращает NaN для 17 культур (Индия, Бангладеш, Бутан)

С новой версией 1.2.1 Globalize мы видим 17 культур, для которых не удается выполнить синтаксический анализ для чисел в диапазоне "сотни" (например, между 100 и 999).

Вот конкретный пример использования данных CLDR JSON версии 30.0.2 (также протестированных с данными CLDR 30.0.3 с такими же результатами):

var g = new Globalize("en-IN");
g.numberParser()(g.numberFormatter()(1000.01)); // prints 1000.01
g.numberParser()(g.numberFormatter()(999.99)); // prints NaN

Насколько я знаю, форматирование числа 999,99 и последующий анализ не должны давать NaN, так что это выглядит как ошибка. NaN это также результат для числа 100, и, действительно, кажется, что это результат для любого числа с тремя значащими цифрами.

Если мы просто сосредоточимся на шаге разбора, мы увидим следующее:

var g = new Globalize("en-IN");
console.log(g.numberParser()("1,000.01")) // prints 1000.01
console.log(g.numberParser()("100.01")) // prints NaN

Если мы используем более ранний код Globalize из версии 1.1.2, то поведение будет правильным (то есть никаких проблем с NaN).

Рассматриваемые 17 культур: as-IN,bn-BD,bn-IN,brx-IN,dz-BT,en-IN,gu-IN,hi-IN,kok-IN,ks-Arab-IN,ml-IN,mr-IN,or-IN,pa-IN,ta-IN,ta-LK,te-IN, Наши юнит-тесты подобрали их все после того, как мы обновились до Globalize 1.2.1.

Мы задаемся вопросом, может ли кто-нибудь быть любезным, подтвердить, что он может воспроизвести это (есть ли шаблон jsfiddle для такого рода вещей?), И какие изменения в новой версии Globalize (если это проблема в Globalize) вызывая это, чтобы мы могли, возможно, опубликовать соответствующую проблему.

1 ответ

Решение

Обновление: это исправлено в Globalize 1.2.2.


Спасибо за отличное описание. Это определенно ошибка, я подал ее как https://github.com/globalizejs/globalize/issues/660.

Другие вопросы по тегам