格式化数字、金额,保留小数点后几位(每三位用逗号隔开)

思路

  1. 使用tofixed或lodash中的round,格式化数字,保留小数点后几位
  2. 使用toLocaleString将数字格式化,小数点前每三位用逗号隔开,然后计算小数点位置,根据要求补0

注意

  1. 数字使用toLocaleString才能格式化为千分位的写法,如果使用tofixed保留小数点后几位,需要转换成数字再调用toLocaleString。
  2. 使用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('')}`
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容