2016-08-21 6 views
1

У меня есть пользовательский ввод, содержащий число с десятичными знаками. я должен изменить этот вход в формат, который я могу использовать для выполнения вычислений.Форматирование форматирования jQuery неверно работает

Итак, рассмотрит следующее:

input   --> should become 
10,123.15  --> 10.123,15 
10.123,15  --> 10.123,15 
10,123.1  --> 10.123,10 
10.123,1  --> 10.123,10 
10,123  --> 10,123,00 
10.123  --> 10.123,00 
10.123,13562 --> 10.123,14 
10,123.13562 --> 10.123,14 

Других слова: использование точек для тысяч сепараторов, запятая для десятичного разделителя о всегда возвращает облавы, два десятичного числа.

Я пробовал использовать regex'es, substr, round, но я немного застрял. У меня есть работа сейчас для первых двух примеров, упомянутых выше, но теперь это не работает для остальных.

Посмотрел на это уже несколько часов, но, может быть, вы можете мне помочь? JQuery Number Formatting помог мне немного, но все же он не работает для всех приведенных выше примеров.

Я был бы так счастлив, если бы кто-то мог мне помочь!

+1

Если запятая перед тем точкой, 1. удалить запятые, 2. Использование toFixed (2), 3. переформатировать используя одну из многих европейских число форматтеров - Если точка перед тем запятой заменить точки ничего не замените запятыми точками. промыть и повторить – mplungjan

ответ

1

Вы можете использовать toLocaleString() для достижения этого, если вы предоставите языковой стандарт, который форматирует число таким образом, который вам нужен; de-DE например. Попробуйте это:

var foo = '10,123.15'; // number as string 
 
var num = parseFloat(foo.replace(',', '')); // remove the , and convert to float 
 
console.log(num.toLocaleString('de-DE')); // format to locale

0

ТНХ для ответа!

Я попробовал их, и из-за этого у меня появилось еще несколько идей. Я решил его, итерации входного значения val справа налево, проверяя, является ли символ запятой или точкой. Затем действуйте соответствующим образом. Сейчас работает нормально!

Еще раз спасибо,

С уважением

Смежные вопросы