前言
由于js自帶的toFixed()方法精度有問題樱蛤,如下所示:
0.035.toFixed(2));//0.04
0.045.toFixed(2));//0.04
特此提出前端公共方法:
// @num->要四舍五入的數(shù)字;
// @fractionDigits->保留小數(shù)位數(shù)
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分制的數(shù)字衍腥,如果直接用后臺返的數(shù)5,也會存在問題秫逝。所以要先100轉換成整數(shù)贺辰,再/100取小數(shù)
0.83*5 // 4.1499999999999995
0.83*100*5/100 // 4.15 (處理方式)
如果本文對你有所幫助户盯,感謝點一顆小心心嵌施,您的支持是我繼續(xù)創(chuàng)作的動力!
最后:寫作不易莽鸭,如要轉裁吗伤,請標明轉載出處。