我想用 JavaScript 格式化价格。我想要一个以浮点数作为参数并返回格式如下的字符串的函数:\'$ 2,500.00\'我该怎么做?
我想用 JavaScript 格式化价格。我想要一个以 为 float
参数并返回 string
格式如下的函数:
"$ 2,500.00"
我怎样才能做到这一点?
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'
在示例中)使用系统区域设置(如果代码在浏览器中运行,则为用户区域设置)。 区域设置代码的进一步说明 .
以下是 货币代码列表 .
最后要说明的是,将其与旧版本进行比较。 toLocaleString
它们都提供基本相同的功能。但是,toLocaleString 的旧版本(Intl 之前)实际上 不支持 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 */
en-US
开箱即用。一种解决方案是安装 full-icu , 更多信息 此处