如题,虽然JS本身有四舍五入方法,网络上也有不少这类型的方法但是经测试始终达不到正确的效果。
例如要保留2位小数: 2.4 + 4.8 = 7.20 ,但试用了网络上的几种方式得到的结果却是 7.1999  
真的好郁闷....
哪位朋友有正确的 四舍五入 方法?

解决方案 »

  1.   

    //num表示要四舍五入的数,v表示要保留的小数位数。
    function decimal(num,v)
    {
        var vv = Math.pow(10,v);
        return Math.round(num*vv)/vv;
    }
      

  2.   

    function round(num, digit){
    var multiple = Math.pow(10, digit),
    _num = num * multiple;
    return Math.round(_num) / multiple;
    }

    alert(round(2.4168, 2)); // 2.42
    alert(round(2.4168, 1)); // 2.4
      

  3.   


    function format(v,p)
    {
    if(!(+v===v&&+p===p&&p>=0&&p<=8)) return v;
    var result = '';
    var r = (v*Math.pow(10,p)+.5|0)/Math.pow(10,p);
    var t = ''+r;
    var a = t.split('.');
    result = t+((p>0&&a.length^2)?'.':'');
    for(i=0;i<p-(a.length^1?a[1].length:0);i++)
    {
    result += '0';
    }
    return result;
    }//测试用例
    var u = [[2.4+4.8,3],[1,2],['abc',2],[3.33333,9]];
    for(n=0;n<u.length;n++)
    {
    alert(n+":format("+u[n][0]+","+u[n][1]+") : "+format(u[n][0],u[n][1]));
    }
      

  4.   

    !(+v===v&&+p===p&&p>=0&&p<=8)
    能解析下 这里的3个 “=”是神马意思呢?
    我还是第一次看到这样的使用方式