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

新手上路,请多包涵

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

我是这样写的:

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

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

1. 为什么IE要加小数点?

2. 如何去掉小数点?

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

原文由 Keven 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 528
2 个回答

toLocaleString 怎么样:

 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

"en" 替换为 支持的 语言标签之一*。例如:

 'en-US'
// en => a BCP 47 tag that represents a language
// US => a ISO_3166-1 Alpha-2 subtag that represents a country | optional

"USD" 替换为 ISO-4217 货币代码。例如:

 'EUR'
// EUR is currency #978 on the active currencies codes list.
// The result would be a numeric value prefixed by the € sign

\* 更多信息可在 BCP 47ISO 3166-1 wiki 上找到。

原文由 Guy 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

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

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

*Andy 我会添加这个作为对您的回答的评论,但我没有足够的声誉。

原文由 a15n 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏