2016-10-05 11 views
1

У меня возникли проблемы при разборе отрицательных чисел с JQuery Globalize 1.1.1:JQuery Globalize разобрать отрицательное число

Globalize.parseNumber('-1'); // = 1 
Globalize.parseNumber('-100,00'); // = 100 

Так что, похоже Globalize преобразовывает отрицательное число положительное число. Следующие CLDR-данные загружены:

  • дополнительного/likelySubtags
  • дополнительного/TimeData
  • дополнительного/weekData
  • дополнительного/numberingSystems
  • основные/SV/номер
  • главную/SV/timeZoneNames
  • main/sv/ca-gregorian

Не удалось найти что-либо на этом с помощью Google-поиска. Я что-то упускаю?

+0

Самый простой способ борьбы с этим является использование 'Number' конструктор напрямую. например 'Number ('- 100.00')' Поведение по умолчанию с любым встроенным конструктором - это вернуть примитив того же типа. – synthet1c

+0

Число contructor, похоже, не работает с локальными числовыми форматами: Number ('- 100,00') возвращает NaN – Fraggel

+0

Извините, пропустил разделитель запятой. – synthet1c

ответ

0

Globalise (1.1.x) выводит символ минус из CLDR при разборе. На шведском (sv) знак минус (0x2212) не - (0x2D), как вы использовали в приведенном выше примере. Вот почему это не работает для вас. Быстрый тест, чтобы утверждать разборе для отрицательных чисел:

var sv = Globalize("sv"); 
sv.parseNumber(sv.formatNumber(-100)) === -100; // > true 

Сказав, что, похоже, «Loose Matching» это функция, которая может быть ваш интерес. Он будет нормализовать различные типы тире, свободное пространство для пробела, запятую, используемую как аббревиатуру, и т. Д. До разбора. Это не поддерживается глобализацией. Мы отслеживаем такую ​​особенность здесь:

https://github.com/jquery/globalize/issues/292