将逗号添加到数字同时将其限制为仅2位小数时遇到问题

时间:2011-02-22 22:47:39

标签: javascript jquery

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


P = addCommas(P);
$("#monthly_result").html(P.toFixed(2)); 

我遗漏了P计算,所以请记住它输出的数字是千位数和小数。

我从堆栈中获取了该函数,它可以很好地为数千个数字添加逗号。但是,当我试图将值限制为2位小数时,它不会输出任何内容。

由于

2 个答案:

答案 0 :(得分:1)

我的回答非常简单,但是你想要的是:

http://phpjs.org/functions/number_format:481

示例:

$("#monthly_result").html(number_format('1234.56', 2));

答案 1 :(得分:0)

toFixed不适用于字符串(addCommas函数返回的字符串)。 简单的解决方案是使用parseFloat将数字转换为float,然后使用toFixed剪切小数位并转换回字符串以继续执行您的函数。

对于固定数量的小数位,有以下几点:

function addCommas(num) {
  var num = parseFloat(num).toFixed(2)+'',
      rgx = /(\d+)(\d{3}[\d,]*\.\d{2})/;

  while (rgx.test(num)) {
    num = num.replace(rgx, '$1' + ',' + '$2');
  }
  return num;
}

在这种情况下,addCommas(61423.34512);会返回"61,423.35"。我建议使用Robert发布​​的number_format函数来获得一些额外的格式化选项。