使用纯javascript格式化数字

时间:2015-04-02 11:07:15

标签: javascript number-formatting

我写了一个代码来计算投票数。我得到的输出为138405,150000等。

我希望这些数字格式化为138,405。 如何使用纯JavaScript实现此目的?

3 个答案:

答案 0 :(得分:1)

您需要先确定约定。你想要你的逗号分开两个数字,还是三个数字?

按照通常惯例,让我们想象它是3。

  • 1000应该成为1, 000
  • 10000应该成为10,000
  • 100000应该成为100,000
  • 1000000应该成为1,000,000

实现这一目标的代码可以像以下一样简单:

function formatWithComma(interval, num) {
  var digits = String(num).split(''),
      output = [];

  digits.forEach(function(digit, index) {
    output.push(digit);
    if(index % interval === 0) {
      output.push(',');
    }
  });

  return digits.reverse().join('');
}

此函数期望以插入逗号的时间间隔和一个数字来调用,从中构建格式化字符串。

  • formatWithComma(3, 12345) === "12,345"
  • formatWithComma(2, 12345) === "1,23,45"

您可以更进一步,使用Javascript的partial application mechanism创建一个预加载第一个参数的格式函数。

var format = formatWithComma.bind(this, 3);

之后,对format的任何调用都会在每个第3位数字处插入逗号。

答案 1 :(得分:1)

根据您的浏览器定位,您可以使用Number.prototype.toLocaleString()根据您可以指定的区域设置格式化您的号码。示例在下面的链接页面上。

请参阅https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString

例如:

var number = 123456.789;

console.log(number.toLocaleString('en-US'));
// → 123,456.789

如果未指定区域设置,则将使用用户浏览器区域设置。

答案 2 :(得分:0)

我想出了这个功能。它对我来说很好。

function addCommas(nStr) {
    nStr += '';
    x = nStr.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;
}