//* 金额千分位加逗号,保留2位小数,不足补零,否则四舍五入
// * 参数说明:
// * num:要格式化的数字 string或者number
// * decimals:保留几位小数
// * dec_point:小数点符号
// * thousandsSep:千分位符号
// return 金额格式的字符串,如'1,234,567.45'
// * */
number (num, decimals, thousandsSep) {
if (isNaN(num)) {
num = '0.00'
}
let prec = !isFinite(+decimals) ? 0 : Math.abs(decimals) // 保留的位数一定是有限位数的正整数
let sep = (typeof thousandsSep === 'undefined') ? ',' : thousandsSep
let s = num.toString().replace(/,/g, '') // 字符串,将,变成'';
let p = parseFloat(s) // 解析一个字符串,并返回一个浮点数
let n = isNaN(p) ? 1 : p
let formatNum = n.toFixed(prec).toString().replace(/(\d)(?=(\d{3})+\.)/g, function ($0, $1) {
return $1 + sep
})
return num ? formatNum : ''
}
// let num = number(333322.8199, 5,'')
// console.log(num,'nm')
方法中 判断了是否是NaN 和无穷大默认千分位加逗号分隔