为了账号安全,请及时绑定邮箱和手机立即绑定

为什么js里面有些数字*100结果会不准确?

为什么js里面有些数字*100结果会不准确?

拉莫斯之舞 2018-08-10 11:10:14
想实现输入的是一个小数,输出一个百分数代码如下:app.filter("rateFilter", function () {    return function (rate) {        var clickRate = rate;        console.log(clickRate);        var result = clickRate * 100 + "%";        console.log(result);        return result;     } })结果输出的部分数据不正常:是什么原因导致的呢?
查看完整描述

1 回答

?
慕虎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


查看完整回答
反对 回复 2018-09-16
  • 1 回答
  • 0 关注
  • 2459 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信