使用
对金额实行千分位的格式化
// utils.js文件中
export function formatMoney (num, option = {}) {}
// vue文件中
import { formatMoney } from '../common/utils.js'
data(){
return{
// 需要data中定义
formatMoney
}
}
参数说明
第一个参数 num 需要转化的数值
第一个参数 option ,是一个配置对象 Object 类型
- option.decimals number类型,保留几位小数 默认2
- option.padEnd boolean类型,小数位数不够时是否自动补0, 默认false
- option.delimiter string类型,千分位分割时的分割符,默认逗号(,)
源码
---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