JS—toFixed()方法 四舍五入Bug 修复方法 VUE篇

前言

由于js自带的toFixed()方法精度有问题,如下所示:

0.035.toFixed(2));//0.04
0.045.toFixed(2));//0.04

查看造成精度不准的原因,请点击前往 》

特此提出前端公共方法:

// @num->要四舍五入的数字; 
// @fractionDigits->保留小数位数
export const toFixed = (num, fractionDigits) => {
  let f = Math.round(num * Math.pow(10, fractionDigits)) / Math.pow(10, fractionDigits);
  var s = f.toString();
  if (fractionDigits > 0) {
    var rs = s.indexOf('.');
    if (rs < 0) {
      rs = s.length;
      s += '.';
    }
    while (s.length <= rs + fractionDigits) {
      s += '0';
    }
  }
  return s;
}

引用方式:

import { toFixed } from '@/util'

toFixed(Number(num) * 100 * 5 / 100, 1)

后台返回百分比,前端展示为5分制的数字,如果直接用后台返的数5,也会存在问题。所以要先100转换成整数,再/100取小数

0.83*5 // 4.1499999999999995
0.83*100*5/100 // 4.15 (处理方式)

如果本文对你有所帮助,感谢点一颗小心心,您的支持是我继续创作的动力!
最后:写作不易,如要转裁,请标明转载出处。

你可能感兴趣的:(JS—toFixed()方法 四舍五入Bug 修复方法 VUE篇)