第一种
formatNumber = num => {
if (isNaN(num)) {
throw new TypeError("num is not a number");
}
var groups = (/([\-\+]?)(\d*)(\.\d+)?/g).exec("" + num),
mask = groups[1], //符号位
integers = (groups[2] || "").split(""), //整数部分
decimal = groups[3] || "", //小数部分
remain = integers.length % 3;
var temp = integers.reduce(function (previousValue, currentValue, index) {
if (index + 1 === remain || (index + 1 - remain) % 3 === 0) {
return previousValue + currentValue + ",";
} else {
return previousValue + currentValue;
}
}, "").replace(/\,$/g, "");
return mask + temp + decimal;
}
第二种
formatAmount = (text, prec=2) => {
//需要排除空字符串、null,但是要包含数字0
if (!(!text && typeof (text) != 'undefined' && text != 0) && String(text) && !isNaN(Number(text))) {
// if(!isNaN(Number(text))){
// if (String(text)) {
let val;
let number = text;
let newNumber = number;
let pointLength;
let s = '';
let numberArr = newNumber.toString().split('.');
if (numberArr.length > 1) {
pointLength = numberArr[1].length;
} else {
pointLength = 0;
}
number = (number + '').replace(/[^0-9+-Ee.]/g, '');
let n = !isFinite(+number) ? 0 : +number,
toFixedFix = function (n, prec) {
let k = Math.pow(10, prec);
return '' + Math.round(n * k) / k;
};
s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
let re = /(-?\d+)(\d{3})/;
while (re.test(s[0])) {
s[0] = s[0].replace(re, "$1" + ',' + "$2");
}
if ((s[1] || '').length < prec) {
s[1] = s[1] || '';
}
if (pointLength > 0) {
val = s.join('.');
} else {
val = s.join('')
}
return val;
}
}