思路
- 使用tofixed或lodash中的round,格式化数字,保留小数点后几位
- 使用toLocaleString将数字格式化,小数点前每三位用逗号隔开,然后计算小数点位置,根据要求补0
注意
- 数字使用toLocaleString才能格式化为千分位的写法,如果使用tofixed保留小数点后几位,需要转换成数字再调用toLocaleString。
- 使用toLocaleString方法,如果小数点后是0的话,会被去除,因此需要自己动态补0
/**
* 数字格式化
* @param a 数字
* @param b 保留后几位
* @returns
*/
const amoutInterval = function (a: number, b: number) {
// round 是lodash-es中保留小数点后几位的方法,如若没有,可以使用tofixed
const amout = round(a, b).toLocaleString()
// 如果不需要保留后几位,直接返回
if (!b) {
return amout
}
// 如果小数点后几位不符合要求,则动态+0
if (amout.includes('.')) {
const num = amout.length - amout.indexOf('.') - 1
return num < b ? `${amout}${Array(b - num).fill(0).join('')}` : amout
}
//如是整数,则动态补0
return `${amout}.${Array(b).fill(0).join('')}`
}