Javascript Числовое форматирование мин / макс десятичные - PullRequest
6 голосов
/ 17 февраля 2011

Я пытаюсь создать функцию, которая может форматировать число с минимальными десятичными разрядами 2 и максимумом 4. Таким образом, в основном, если я передам 354545,33, я вернусь 354 545,33, и если я передам 54433,6559943, я получу назад 54 433 6559.

function numberFormat(num){
    num = num+"";
    if (num.length > 0){

        num = num.toString().replace(/\$|\,/g,'');
        num = Math.floor(num * 10000) / 10000;

        num += '';
        x = num.split('.');
        x1 = x[0];
        x2 = x.length > 1 ? '.' + x[1] : '';
        var rgx = /(\d+)(\d{3})/;
        while (rgx.test(x1)) {
            x1 = x1.replace(rgx, '$1' + ',' + '$2');
        }
        return x1 + x2;

    }
    else{
        return num;
    }
}

Ответы [ 2 ]

16 голосов
/ 17 февраля 2011

Новое решение 2016 года

value.toLocaleString('en-US', {
    minimumFractionDigits: 2,
    maximumFractionDigits: 4
});

Не забудьте включить polyfill .

Старое решение 2011 года

Чтобы отформатировать деталь, после десятичной точки вы можете использовать это:

value.toFixed(4).replace(/0{0,2}$/, "");

А для части до десятичной точки: Как написать эту функцию JS лучшим (самым умным) способом?

1 голос
/ 17 февраля 2011

Вы делаете это неправильно.

54433.6559943.toFixed(4) округлится до 4 мест.Затем вам нужно обрезать до двух конечных нулей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...