没办法,事情就是这个样子滴。float是一种不精确的数据类型

解决方案 »

  1.   

    toFixed();alert((10.01+10).toFixed(2))括号里的数字是小数位数
      

  2.   

    这是JS的实现问题,我们无能为力的,只能四舍五入一下
    Math.round
      

  3.   

    自己打造个修正函数:<script>function psum(op, var1, var2 )
    {
        
        if( (var1+"").indexOf(".")!= -1 || (var2+"").indexOf(".")!= -1 )
        {
            var len1 = 0;
            var len2 = 0;
            if( (var1+"").indexOf(".")!= -1 )
                len1 = (var1+"").split(".")[1].length;
            if( (var2+"").indexOf(".")!= -1 )
                len2 = (var2+"").split(".")[1].length;
            var p = Math.pow(10,len1>len2?len1:len2);
            var1 = parseInt( var1 * p );
            var2 = parseInt( var2 * p );        switch(op)
            {   
                case "+":
                    return (var1 + var2)/p;
                case "-":
                    return (var1 - var2)/p;
                case "*":
                    return (var1 - var2)/(p*p);
                case "/":
                    return (var1 / var2);
            }
        }
        else
        {
            switch(op)
            {   
                case "+":
                    return (var1 + var2);
                case "-":
                    return (var1 - var2);
                case "*":
                    return (var1 - var2);
                case "/":
                    return (lena / lenv);
            }
        }
    }alert( psum( "+", 10.01, 10 ) );
    </script> 
      

  4.   

    <script>alert((10.01*100+10*100)/100) </script> 
      

  5.   

    Javascript的浮点数计算是有点问题的,一般都是先转化成整数再计算。
      

  6.   

    那是因为继承了c语言强制转换 double 为 float 时精度调整的问题,实际上这是c语言调整精度所致.