JavaScript 原生数字千分位格式化函数(多功能的toLocaleString)

Number.prototype.toLocaleString([locales [, options]])
toLocaleString()方法返回这个数字在特定语言环境下的表示字符串。
新的 locales options 参数让应用程序可以指定要进行格式转换的语言,并且定制函数的行为。


domestic

const a = 123456789

a.toLocaleString()
 // => "123,456,789"

a.toLocaleString('zh',{style:'decimal'}) 
 // => "123,456,789"

a.toLocaleString('zh',{style:'percent'})  
 // => "12,345,678,900%"

a.toLocaleString('zh',{style:'currency' , currency:'CNY' })
 // => "¥123,456,789.00"

a.toLocaleString('zh', { style: 'currency', currency: 'CNY', currencyDisplay: 'code' })
 // => "CNY 2,333,333.00"

a.toLocaleString('zh', { style: 'currency', currency: 'CNY', currencyDisplay: 'name' } 
// => "123,456,789.00人民币"

// 如果不想有分隔符,可以指定options的useGrouping为false

a.toLocaleString('zh',{useGrouping: false, style: 'currency', currency: 'CNY'})
 // => "¥123456789.00"

a.toLocaleString('zh-Hans-CN-u-nu-hanidec', { useGrouping: false}) 
// => "一二三四五六七八九"

a.toLocaleString('zh-Hans-CN-u-nu-hanidec', { style: 'currency', currency: 'CNY', currencyDisplay: 'name'} )
 //=> "一二三,四五六,七八九.〇〇人民币"

/*
其他options
minimumIntegerDigits
使用的整数数字的最小数目.可能的值是从1到21,默认值是1.

minimumFractionDigits
使用的小数位数的最小数目.可能的值是从 0 到 20;默认为普通的数字和百分比格式为 0;
 (如果列表中没有提供则值为 2)。

maximumFractionDigits
使用的小数位数的最大数目。可能的值是从 0 到 20;
纯数字格式的默认值是minimumfractiondigits 和 3 中大的那一个;
(如果列表中没有提供则值为2);
百分比格式默认值是 minimumfractiondigits 和 0 中大的那一个。

minimumSignificantDigits
使用的有效数字的最小数目。可能的值是从1到21;默认值是1。

maximumSignificantDigits
使用的有效数字的最大数量。可能的值是从1到21;默认是 21.
*/

overseas

const number = 123456.789;

// 德国使用逗号作为小数分隔符,分位周期为千位
console.log(number.toLocaleString('de-DE'));
// → 123.456,789

// 在大多数阿拉伯语国家使用阿拉伯语数字
console.log(number.toLocaleString('ar-EG'));
// → ١٢٣٤٥٦٫٧٨٩

// 印度使用千位/拉克(十万)/克若尔(千万)分隔
console.log(number.toLocaleString('en-IN'));
// → 1,23,456.789

// nu 扩展字段要求编号系统,e.g. 中文十进制
console.log(number.toLocaleString('zh-Hans-CN-u-nu-hanidec'));
// → 一二三,四五六.七八九

// 当请求不支持的语言时,例如巴厘语,加入一个备用语言,比如印尼语
console.log(number.toLocaleString(['ban', 'id']));
// → 123.456,789

// 要求货币格式
console.log(number.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' }));
// → 123.456,79 €

// 日元不使用小数位
console.log(number.toLocaleString('ja-JP', { style: 'currency', currency: 'JPY' }))
// → ¥123,457

// 限制三位有效数字
console.log(number.toLocaleString('en-IN', { maximumSignificantDigits: 3 }));
// → 1,23,000

posted @ 2021-06-24 20:13  demo_you  阅读(853)  评论(0编辑  收藏  举报