本文已参与「新人创作礼」活动,一起开启掘金创作之路。
千分位
千分位格式:999,999.9999
整数部分用逗号每三位数字隔开,小数部分不需要分隔
实现
1. toLocaleString
const value:number;
value.toLocaleString('en-us', {
maximumFractionDigits: 20, // 小数位最大保留位数:0-20
minimumFractionDigits: 2 // 小数位最小保留位数:0-20
})
注意:只用于number类型
参考:MDN Number.prototype.toLocaleString()
2. Intl.NumberFormat
const value:number;
new Intl.NumberFormat('en-us', {
maximumFractionDigits: 20, // 小数位最大保留位数:0-20
minimumFractionDigits: 2 // 小数位最小保留位数:0-20
}).format(value)
注意:只用于number类型
3. 正则
整数部分格式化:
function format_with_regex(val) {
var reg = /\d{1,3}(?=(\d{3})+$)/g;
return (val + '').replace(reg, '$&,');
}
function format_with_regex(val) {
var reg = /(\d)(?=(?:\d{3})+$)/g;
return (val + '').replace(reg, '$1,');
}
拼接小数部分:
const value:string;
const [int, fraction] = value.split('.');
return format_with_regex(int) + (!!fraction ? "." + fraction : '');
参考
数值转字符串遍历、substring、除法+求模 & 性能对比: 数值千分位,6种方法和性能对比,值得一看