JavaScript:使用toLocaleString()格式化整数

时间:2014-02-03 20:23:54

标签: javascript

我正在使用Number.prototype.toLocaleString()函数为整数添加逗号。可以找到here的文档。

我写的如下:

Number(data).ToLocaleString('en');

在Firefox / Chrome中,该号码显示为123,456,789。但是,在IE中,它显示为123,456,789.00

1。为什么IE添加小数点值?

2。如何删除小数点值?

我真的只是想知道是否有一个选项可以添加到ToLocaleString(),如en, nodecimal,而不是创建/使用自定义函数。如果该选项不可用,我将考虑自定义功能。

4 个答案:

答案 0 :(得分:10)

您测试的是哪个版本的IE?在IE 10及更低版本中,toLocaleString基于ECMAScript规范,该规范声明该函数应该是“依赖于实现的”。在IE 11中,它基于ECMA Internationalization API,并且应与Firefox 26保持一致。

要删除IE 10及更低版本(以及其他旧浏览器)中的小数值,您将不得不求助于字符串操作:

Number(data).toLocaleString('en').slice(0, -3);

此API也有a polyfill available,适用于IE 10及更低版本。目前包含它有点棘手,因为浏览器/缩小版本不包含实际数据(因为它会很大)。数据以JSON或JSONP格式单独提供,以便您可以为当前浏览您网站的用户下载正确的数据。

答案 1 :(得分:9)

1)参考Andy E的(1)答案。

2)Andy E的解决方案适用于IE 10及更低版本但似乎在现代浏览器上导致错误的输出(在控制台中尝试使用任何数字)。这是一个更安全的字符串操作:

Number(data).toLocaleString().split('.')[0];

*安迪我会在评论中添加这个作为你的回答,但我没有足够的声誉。

答案 2 :(得分:3)

Number(data).toLocaleString()。replace(/ \ D \ d \ d $ /,'');应涵盖任何区域设置和浏览器。

答案 3 :(得分:2)

怎么样:

const sum = 1000;

const formatted = sum.toLocaleString("en", {   
    minimumFractionDigits: 0,
    maximumFractionDigits: 0,
});

console.log(formatted);

针对:

// 1,000

或者如果您有钱的话:

const sum = 1000;

const formatted = sum.toLocaleString("en", {
    style: "currency",
    currency: "USD",
    minimumFractionDigits: 0,
    maximumFractionDigits: 0,
});

console.log(formatted);

针对:

// $1,000