对金额实行千分位的格式化
// 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