Подтвердить что ты не робот

Функция jQuery для форматирования числа с запятой и десятичной запятой

Я использую следующую функцию для форматирования чисел по типу пользователя. Он будет вставлять запятую каждые 3 числа. Пример: 45696.36 становится 45,696.36.

Однако я столкнулся с проблемой. Если числа после десятичного разряда длиннее 3 цифр, он начинает добавлять к ним запятые. Пример: 1136.6696 становится 1,136.6,696.

Это моя функция:

$.fn.digits = function(){
  return this.each(function() {
    $(this).val( $(this).val().replace(/[^0-9.-]/g, '') );
    $(this).val( $(this).val().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,") ); 
  }) 
}

Как я могу исправить это, чтобы он не помещал запятые после десятичной запятой? Я использую jQuery 1.8. Спасибо!

4b9b3361

Ответ 1

Вы можете выполнить это, разделив строку на символ ".", а затем выполнив запятую только в первом разделе:

function ReplaceNumberWithCommas(yourNumber) {
    //Seperates the components of the number
    var n= yourNumber.toString().split(".");
    //Comma-fies the first part
    n[0] = n[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
    //Combines the two sections
    return n.join(".");
}

ReplaceNumberWithCommas(1136.6696); //yields 1,136.6696

Пример

Ответ 2

Я использую accounting.js lib:

accounting.format(1136.6696, 4) // 1,136.6696