javaScript 金额千分位,保留两位小数

919 阅读1分钟

本案例使用范围没有负号,例如-52这样的数字,也不包含$等特殊符号的金额

  let formatMount = function(money) {
    let cents // 用来拼接小数位

    if (money === null) { 
      money = '0'
    }
    if (money.indexOf('.') > 0) { // 处理小数位 
      cents = `.${Number(money).toFixed(2).split('.')[1]}` // 如果有小数位取出小数位 比如23.45 处理之后就是 .45
    } else {
      cents = '.00' // 没有小数位的直接加上 .00
    }
    money = Math.floor(money) // 取出整数位
    money = ('' + money).replace(/(\d{1,3})(?=(\d{3})+(?:$|\.))/g, '$1,')
    return money + cents
  }
  // 数据一般从后台请求过来,大部分情况下,是以字符来表示的,所以你看到参数是字符串形式的
  formatMount('256') // 256.00 
  formatMount('2564') // 2,564.00
  formatMount('256.1') // 256.10
  formatMount('256.178') // 256.18
  formatMount('123456') // 123,456.00
  formatMount('1234567') // 1,234,567.00
  formatMount(null) // 0.00

因为是后台请求过来的数据可能会存在 null 的情况,如果不对这种情况做处理, 就直接报错了