javascript - 为什么js里面有些数字*100结果会不准确?
本文介绍了javascript - 为什么js里面有些数字*100结果会不准确?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
想实现输入的是一个小数,输出一个百分数
代码如下:
app.filter("rateFilter", function () {
return function (rate) {
var clickRate = rate;
console.log(clickRate);
var result = clickRate * 100 + "%";
console.log(result);
return result;
}
})
结果输出的部分数据不正常:
是什么原因导致的呢?
解决方案
舍入误差
,具体的参考一下浮点数的计算方法就知道是怎么回事儿了。
如果不是有特殊的精度要求,我一般会对可能出现误差的情况做点简单处理。
//按照有效数字位数进行四舍五入,默认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) {
const temp = Math.pow(10, temp);
ans = Math.round(number / temp) * temp;
} else {
ans = Math.round(number);
}
return (ans * sign);
};
0.56 * 100; //56.00000000000001
Math.signFigures(0.56 * 100); //56
0.2 + 0.1; //0.30000000000000004
Math.signFigures(0.2 + 0.1); //0.3
1.09 * 100; //109.00000000000001
Math.signFigures(1.09 * 100); //109
这篇关于javascript - 为什么js里面有些数字*100结果会不准确?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文