一、示例
二、代码
// 接受入参:数字、数字字符串、0、空字符串、null(null被当做0进行处理)
// digit 表示补零几位。默认是 2,表示小数点后如果 0 位或者 1 位,那么自动补零到 2 位。
// isCut 当小数位大于digit设定值时,是否对小数位进行额外的截取处理,默认不处理
let numberFormat = (num, digit = 2, isCut = false) => {
// 先考虑返回值为 0
if (num === 0 || num === '0' || num === null) {
return `0.${'0'.padEnd(digit, '0')}`;
}
if (!num) {
return num;
}
const s = String(num);
const arr = s.split('.');
if (isCut) {
arr[1] = arr[1].substr(0, digit);
}
if (arr.length === 1) {
// 表示没有小数位
// 对整数部分进行处理
let reg = /(\d)(?=(?:\d{3})+$)/g;
let target = arr[0].replace(reg, '$1,');
return `${target}.${'0'.padEnd(digit, '0')}`;
} else {
// 有小数,分别处理
// 对整数部分进行处理
let reg = /(\d)(?=(?:\d{3})+$)/g;
let target = arr[0].replace(reg, '$1,');
return `${target}.${arr[1].padEnd(digit, '0')}`;
}
};
三、注意事项
在使用上述方法时,因未考虑对象、数组等不符合要求的数据传入,所以请严格按照入参进行使用。