想实现输入的是一个小数,输出一个百分数代码如下:app.filter("rateFilter", function () { return function (rate) { var clickRate = rate; console.log(clickRate); var result = clickRate * 100 + "%"; console.log(result); return result;
}
})结果输出的部分数据不正常:是什么原因导致的呢?
1 回答
![?](http://img1.sycdn.imooc.com/54584eff000195a302200220-100-100.jpg)
慕虎7371278
TA贡献1802条经验 获得超4个赞
舍入误差
,具体的参考一下浮点数的计算方法就知道是怎么回事儿了。
如果不是有特殊的精度要求,我一般会对可能出现误差的情况做点简单处理。
//按照有效数字位数进行四舍五入,默认6位有效数字Math.signFigures = function(num, rank = 6) { if(!num) return(0); const sign = num / Math.abs(num); const number = num * sign; const temp = rank - 1 - Math.floor(Math.log10(number)); let ans; if (temp > 0) { ans = parseFloat(number.toFixed(temp)); } else if (temp < 0) { ans = Math.round(number / Math.pow(10, temp)) * temp; } else { ans = Math.round(number); } return (ans * sign); };0.56 * 100; //56.00000000000001Math.signFigures(0.56 * 100); //560.2 + 0.1; //0.30000000000000004Math.signFigures(0.2 + 0.1); //0.31.09 * 100; //109.00000000000001Math.signFigures(1.09 * 100); //109
添加回答
举报
0/150
提交
取消