Codog

关注微信公众号:Codog代码狗

0%

如何千分位表示数字

  1. toLocaleString方法
1
2
3
4
> 10154545450.42.toLocaleString('en-US')
< "10,154,545,450.42"
> (-1234567.8912).toLocaleString('en-US')
< "-1,234,567.891" // 注意小数位最多3位
  1. 正则匹配
1
2
3
4
5
6
7
const numberWithCommas = (x) => {
// 小数部分单独处理
var parts = x.toString().split(".");
// 或者 replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
return parts.join(".");
}
  1. 转为字符串数组处理

可能写的有点啰嗦😷

1
2
3
4
5
6
7
8
9
10
11
12
13
function format(number) {
const negative = number < 0
const parts = Math.abs(number).toString().split(".")
parts[0] = parts[0].split('').reverse().reduce((res, cur, index) => {
return `${cur}${index && (index % 3 === 0) ? ',' : ''}${res}`
}, '')
return (negative ? '-' : '') + parts.join('.')
}

format(12345.32433532) // 12,345.32433532
format(-12345.32433532) // -12,345.32433532
format(21341234) // 21,341,234
format(9) // 9