使用纯javascript格式化数字

Format number using pure javascript

本文关键字:格式化 数字 javascript      更新时间:2023-09-26

我写了一个代码来计算票数。我得到的输出是138405150000等

我希望这些数字的格式像这样138405。如何使用纯javascript实现这一点?

根据您的浏览器目标,您可以使用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

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

您需要首先决定什么是约定。您希望逗号分隔两位还是三位?

按照惯例,让我们想象一下是3。

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

实现这一点的代码可能很琐碎,比如:

function formatWithComma(interval, num) {
    const digits = String(num).split('').reverse();
    const output = [];
    digits.forEach(function (digit, index, digits) {
        output.push(digit);
        if ((index + 1) % interval === 0 && (index + 1) < digits.length) {
            output.push(',');
        }
    });
    return output.reverse().join('');
}

调用此函数时,需要插入逗号的间隔和用于构建格式化字符串的数字。

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

您可以更进一步,使用Javascript的部分应用程序机制创建一个预加载了第一个参数的格式函数。

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

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

我想出了这个函数。它对我来说很好。

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;
}