gpt4 book ai didi

javascript - 如何将数字格式化为货币字符串

转载 作者:IT王子 更新时间:2023-10-29 02:58:34 24 4
gpt4 key购买 nike

我想用 JavaScript 格式化价格。我想要一个以 float 作为参数并返回格式如下的 string 的函数:

"$ 2,500.00"

我该怎么做?

最佳答案

Intl.NumberFormat

JavaScript 有一个数字格式化程序(国际化 API 的一部分)。

// Create our number formatter.
const formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',

// These options are needed to round to whole numbers if that's what you want.
//minimumFractionDigits: 0, // (this suffices for whole numbers, but will print 2500.10 as $2,500.1)
//maximumFractionDigits: 0, // (causes 2500.99 to be printed as $2,501)
});

console.log(formatter.format(2500)); /* $2,500.00 */

使用 undefined 代替第一个参数(示例中的 'en-US')以使用系统语言环境(代码运行时的用户语言环境)在浏览器中)。 Further explanation of the locale code .

这是一个 list of the currency codes .

Intl.NumberFormat 与 Number.prototype.toLocaleString

将此与旧的 .toLocaleString 进行比较的最后说明。它们都提供基本相同的功能。但是,toLocaleString 在其较旧的版本中(国际版前)does not actually support locales : 它使用系统语言环境。因此,在调试旧浏览器时,请确保您使用的是正确的版本 ( MDN suggests to check for the existence of Intl )。如果您不关心旧浏览器或只使用 shim,则根本不需要担心这一点。 .

此外,对于单个 项目,两者的性能是相同的,但是如果您有很多数字要格式化,使用 Intl.NumberFormat 是大约 70 倍快点。因此,通常最好使用 Intl.NumberFormat 并在每次页面加载时只实例化一次。不管怎样,下面是 toLocaleString 的等效用法:

console.log((2500).toLocaleString('en-US', {
style: 'currency',
currency: 'USD',
})); /* $2,500.00 */

关于浏览器支持和 Node.js 的一些说明

  • 如今,浏览器支持已不再是问题,全局支持率为 98%,美国为 99%,欧盟为 99% 以上
  • 有一个shim在老旧的浏览器(如 Internet Explorer 8)上支持它,如果你真的需要的话
  • v13 之前的 Node.js 仅支持开箱即用的 en-US。一种解决方案是安装 full-icu , 请参阅 here了解更多信息
  • 看看CanIUse了解更多信息

关于javascript - 如何将数字格式化为货币字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9318674/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com