我正在使用Number.prototype.toLocaleString()
函数为整数添加逗号。可以找到here的文档。
我写的如下:
Number(data).ToLocaleString('en');
在Firefox / Chrome中,该号码显示为123,456,789
。但是,在IE中,它显示为123,456,789.00
。
1。为什么IE添加小数点值?
2。如何删除小数点值?
我真的只是想知道是否有一个选项可以添加到ToLocaleString(),如en, nodecimal
,而不是创建/使用自定义函数。如果该选项不可用,我将考虑自定义功能。
答案 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