前言
由于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 (处理方式)
如果本文对你有所帮助,感谢点一颗小心心,您的支持是我继续创作的动力!
最后:写作不易,如要转裁,请标明转载出处。