数字逗号分割/千位分割

495 阅读1分钟

方法1:数组方式

/**
 * @description 不包含小数的
 * @param {value: 具体数值, num: 分割位数}
 * @return 
 */
function splitWithComma(value, num) {
  value = value.toString()
  let result = []
  let times = Math.ceil(value.length % num);
  for (let i=0; i <= times; i++) {
    let start = value.length % num === 0 ? num : value.length % num
    result.push(value.slice(0, start))
    value = value.slice(start)
  }
  return result.join(',')
}

/**
 * @description 包含小数的
 * @param {value: 具体数值, num: 分割位数}
 * @return 
 */
function splitPointWithComma(value, num) {
  value = value.toString()
  // 获取小数部分
  let pointValue = value.match(/(\.\w*)/g).join('')
  // 获取整数部分
  value = value.match(/(\w*\.)/g).join().split('.').join('')
  let result = []
  let times = Math.ceil(value.length % num);
  for (let i=0; i <= times; i++) {
    let start = value.length % num === 0 ? num : value.length % num
    result.push(value.slice(0, start))
    value = value.slice(start)
  }
  result = result.join(',') + pointValue
  return result
}

let a = 12345678
console.log(splitWithComma(a, 3))
let b = 12345678.2342
console.log(splitPointWithComma(b, 3))