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

Kev*_*ven 17 javascript

我正在使用该Number.prototype.toLocaleString()函数为整数添加逗号.有关它的文档可以在这里找到.

我写的如下:

Number(data).ToLocaleString('en');
Run Code Online (Sandbox Code Playgroud)

在Firefox/Chrome中,数字显示为123,456,789.但是,在IE中它显示为123,456,789.00.

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

2.如何删除小数点值?

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

And*_*y E 11

你测试过哪个版本的IE?在IE 10及更低版本中,toLocaleString基于ECMAScript规范,该规范声明该函数应该是"依赖于实现的".在IE 11中,它基于ECMA国际化API,应与Firefox 26保持一致.

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

Number(data).toLocaleString('en').slice(0, -3);
Run Code Online (Sandbox Code Playgroud)

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

  • 在某些区域设置中将无法使用。例如:显示为“ 123.534,34 kr”的`Number(123534.34).toLocaleString('da-DK',{style:'currency',currency:“ DKK”})`。相反,您应该将[maximumFractionDigits`和minimumFractionDigits`选项设置为0,如在[此处]指定的那样(https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number/ toLocaleString)。例如:`Number(123534.34).toLocaleString('da-DK',{style:'currency',currency:“ DKK”,maximumFractionDigits:0,minimumFractionDigits:0});`将会显示`123.534 kr.`。 (2认同)

a15*_*15n 10

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

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

Number(data).toLocaleString().split('.')[0];
Run Code Online (Sandbox Code Playgroud)

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

  • 当你知道分隔符是一个点(".")时,这可以正常工作,那么逗号和法语一样? (4认同)

Guy*_*Guy 6

怎么样:

const sum = 1000;

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

console.log(formatted);
Run Code Online (Sandbox Code Playgroud)

对于:

// 1,000
Run Code Online (Sandbox Code Playgroud)

或者,如果您有钱:

const sum = 1000;

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

console.log(formatted);
Run Code Online (Sandbox Code Playgroud)

对于:

// $1,000
Run Code Online (Sandbox Code Playgroud)