由于JS本身机制问题,如果直接乘以100+%进行字符串拼接会导致精度出现问题
例如:
(0.359*100)% -> 3.5900000000000003%
解决方法一:
parseFloat((num * 100).toPrecision(12))+"%" // toPrecision 把数字格式化为指定的长度
解决方法二:
// num是目标数,n是精度(保留几位小数)
function formatFloat (num, n=2) {
let f = parseFloat(num);
if (isNaN(f)) return false;
f = Math.round(num * Math.pow(10, n)) / Math.pow(10, n); // floor 舍 round 四舍五入 ceil 入
let s = f.toString();
let rs = s.indexOf('.');
//判定如果是整数,增加小数点再补0
if (rs < 0) {
rs = s.length;
s += '.';
}
while (s.length <= rs + n) {
s += '0';
}
return s;
}
formatFloat(0.359*100)% -> 3.59%