数据处理02-截取小数点指定位数

281 阅读1分钟

有时后端接口给的数据是小数位很长的数据,这可能会导致页面布局出问题,所以有时候可能需要前端对显示的小数位进行手动截取,JavaScript的Number类有个toFix()的方法,可以对小数位进行截取,但是有几个问题可能无法满足需求:

  • 会自动进行四舍五入
  • 对没有小数位的数字也会加上对应个数的0
  • 只能对数字使用,非数字(null/String等)使用会报错

这些问题导致了toFixed方法不太好用,所以有些时候需要自己对数据进行处理:

    // 参数一:要截取的数字
    // 参数二:要保留的小数点位数
    // 返回值:Number类型的返回值
    function numFormat(n, fixNum = 2){
      if (!n) return 0;
      let sn = '' + n;
      let sa = sn.split('.');
      if (sa.length <= 1) return parseFloat(sn);
      if (sa[1].length > fixNum) {
        const n1 = sa[1].slice(0, fixNum);
        sa.splice(1, 1, n1);
        return parseFloat(sa.join('.'));
      }
      return n;
    };