前端常用方法之格式化数字

/**
 * 格式化数字
 * @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
};

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值