一、保留小数点两位,但同时去除小数点后多余0
前端javascript而言,因为小数点精度计算经常有误差,为确保得到2位小数点,调用了toFixed函数。但是,toFixed以后,不管小数点后是不是0,都保留2位。
var a = 6.02;
var b = 3.01
var c = a/b.toFixed(2) ;//c得到了2.00
var d = a/b.toFixed(2)*100/100 //d得到了2
为了得到2,想了一个迂回的办法:c = a/b.toFixed(2)*100/100(如果是保留三位小数,则*1000/1000)
二、强制保留小数点两位,不足的补0
有时候直接用toFixed()方法不好使,所以就用下面这个方法
// 强制保留几位小数,不足补0 (如果直接用toFixed方法无效)
function toFixeds(val, pre) {
const num = parseFloat(val);
// eslint-disable-next-line no-restricted-globals
if (isNaN(num)) {
return false;
}
const p = 10 ** pre;
const value = num * p;
let f = (Math.round(value) / p).toString();
let rs = f.indexOf('.');
if (rs < 0) {
rs = f.length;
f += '.';
}
while (f.length <= rs + pre) {
f += '0';
}
return f;
}
三、数字前面自动补0
// num传入的数字,n需要的字符长度
function PrefixInteger(num, n) {
return (Array(n).join(0) + num).slice(-n);
}
PrefixInteger(722, 5) //"00722"