/**
* 格式化数字
* @param number 要格式化的数字
* @param decimals 保留几位小数
* @param dec_point 小数点符号
* @param thousands_sep 千分位符号
* @returns
*/
const numberFormat = (
number?: number | string,
decimals?: number,
dec_point?: string,
thousands_sep?: string
) => {
number = (number + "").replace(/[^0-9+-Ee.]/g, "");
let n = !isFinite(+number) ? 0 : +number,
prec = !isFinite(+decimals) ? 2 : Math.abs(decimals),
sep = typeof thousands_sep === "undefined" ? "," : thousands_sep,
dec = typeof dec_point === "undefined" ? "." : dec_point,
s = [],
toFixedFix = function (n, prec) {
const k = Math.pow(10, prec);
return "" + Math.ceil(n * k) / k;
};
s = (prec ? toFixedFix(n, prec) : "" + Math.round(n)).split(".");
const re = /(-?\d+)(\d{3})/;
while (re.test(s[0])) {
s[0] = s[0].replace(re, "$1" + sep + "$2");
}
if ((s[1] || "").length < prec) {
s[1] = s[1] || "";
s[1] += new Array(prec - s[1].length + 1).join("0");
}
return s.join(dec);
};
/**
* 格式化成整数,千分位带符号
* @param number 要格式化的数字
* @param thousands_sep 千分位符号
*/
const numberFormatInt = (number?: number | string, thousands_sep?: string) => {
return numberFormat(number, 0, ".", thousands_sep);
};
// 表格金额格式化
const formatterNumber = (row, column, cellValue) => {
return numberFormat(cellValue);
};
// 表格金额格式化保留4位小数
const formatter4Money = (row, column, cellValue) => {
return numberFormat(cellValue, 4);
};
// 表格整数格式化
const formatterInt = (row, column, cellValue) => {
return numberFormatInt(cellValue);
};
export {
numberFormat,
formatterNumber,
numberFormatInt,
formatterInt,
formatter4Money
};
前端常用方法之格式化数字
最新推荐文章于 2024-07-12 09:36:48 发布