其他分享
首页 > 其他分享> > 格式化金额

格式化金额

作者:互联网

使用

对金额实行千分位的格式化

// utils.js文件中
export function formatMoney (num, option = {}) {}

// vue文件中
import { formatMoney } from '../common/utils.js'
data(){
  return{ 
    // 需要data中定义
    formatMoney
  }
}

参数说明

第一个参数 num 需要转化的数值

第一个参数 option ,是一个配置对象 Object 类型

源码

---height
/**
 * @description 格式化金额为千分位格式
 * @param {number} num 需要格式化的金额
 * @param {obj}  option配置对象,decimals最多保留几位小数,padEnd小数不够时是否填充0,delimiter千分位的填充符
 * @return {string}
 */
export function formatMoney (num, option = {}) {
  option = {
    decimals: 2,
    padEnd: false,
    delimiter: ',',
    ...option
    }
  if (isNaN(num)) return
  let numArr = (num + '').split('.')
  if (option.decimals) {
    if (numArr.length > 0) {
      num = Math.round(num * Math.pow(10,option.decimals)) / Math.pow(10,option.decimals)
      numArr = (num + '').split('.')
    }
    numArr[1] = (numArr[1] || '')
    if (option.padEnd) numArr[1] = numArr[1].toString().padEnd(option.decimals, '0')
  }
  let intVal = numArr[0].replace(/(\d{1,3})(?=(\d{3})+)/g,`$1${option.delimiter}`)
  let floatVal = numArr[1] ? `.${numArr[1]}` : ''
  return intVal + floatVal
}

知识

小数可以通过 字符串对象的split()把字符串转化为数组,分整数部分和小数部分

Math.round Math对象的round是吧 数字四舍五入返回一个number类型整数,如果需要保留两位第三位四舍五入需要做特殊处理,即

Math.round(num *100) / 100

标签:格式化,option,padEnd,金额,num,numArr,decimals,Math
来源: https://www.cnblogs.com/voxov/p/15468196.html