Number.prototype.toLocaleString()
toLocaleString()
方法返回这个数字在特定语言环境下的表示字符串。
新的 locales 和 options 参数让应用程序可以指定要进行格式转换的语言,并且定制函数的行为。在旧的实现中,会忽略 locales 和 options 参数,使用的语言环境和返回的字符串的形式完全取决于实现方式。
语法格式:
numObj.toLocaleString(locales, options:{})
locales
可选。缩写语言代码,有很多,一般使用 'zh-CN'
关于参数 locales 的一般形式和解释请参见 Intl page
options
可选。
-
style:
decimal
用于纯数字格式;currency
用于货币格式;percent
用于百分比格式;unit
用于单位格式
-
currency
在货币格式化中使用的货币符号。可能的值是ISO的货币代码 (the ISO 4217 currency codes,) 例如"USD"
表示美元,"EUR"
表示欧元,,或者"CNY"
是人民币。没有默认值,如果 style 是“currency”
,必须提 currency 属性. -
currencyDisplay
如何在货币格式化中显示货币。可能的值有"symbol"
表示使用本地化的货币符号,例如 €,"code"
表示使用国际标准组织货币代码,"name"
表示使用本地化的货币名称,如 “dollar”; 默认值是"symbol"
。· -
minimumFractionDigits
使用的小数位数的最小数目。可能的值是从 0 到 20;默认为普通的数字和百分比格式为 0;默认为货币格式如果没有提供则值为 2 -
maximumFractionDigits
使用的小数位数的最大数目。可能的值是从 0 到 20;纯数字格式的默认值是minimumfractiondigits 和 3 中大的那一个;货币格式默认值是minimumfractiondigits 和 ISO 4217 currency code list 中大的那一个(如果列表中没有提供则值为2);百分比格式默认值是 minimumfractiondigits 和 0 中大的那一个。
var a = '456132489313'
var b = '62315613.265'
var options1 = {
style:'currency',
currency: 'CNY',
currencyDisplay: 'symbol'
}
var options2 = {
style:'currency',
currency: 'CNY',
currencyDisplay: 'name'
}
var options3 = {
style:'currency',
currency: 'CNY',
currencyDisplay: 'code'
}
var options4 = {
style:'currency',
currency: 'EUR',
currencyDisplay: 'symbol'
}
var options5 = {
style:'currency',
currency: 'CNY',
currencyDisplay: 'symbol',
minimumFractionDigits: 4
}
console.log(parseFloat(a).toLocaleString('zh-CN', options1)) // ¥456,132,489,313.00
console.log(parseFloat(a).toLocaleString('zh-CN', options2)) // 456,132,489,313.00人民币
console.log(parseFloat(a).toLocaleString('zh-CN', options3)) // CNY 456,132,489,313.00
console.log(parseFloat(b).toLocaleString('zh-CN', options3)) // CNY 62,315,613.27
console.log(parseFloat(a).toLocaleString('de-DE', options4)) // 456.132.489.313,00 €
console.log(parseFloat(a).toLocaleString('zh-CN', options5)) // ¥456,132,489,313.0000
console.log(parseFloat(a).toLocaleString('zh-CN', options5)) // ¥62,315,613.2650
参考:
MDN Web Docs: Number.prototype.toLocaleString()
JS格式化金钱(千分位加逗号、保留两位小数)