js 四舍五入bug解决方法

js 四舍五入bug解决方法目前js常用四舍五入方法存在bug,无法正确计算特殊数字。例如:vara=8.745;alert(a.toFixed(2));//8.74alert(a.toFixed(2));//8.74alert(a.toPrecision(3));//8.74alert(Math.floor(a*100)/100);//8.74alert(Math.round(a*100)/100);//8.74原因是ale…

目前js常用四舍五入方法存在bug,无法正确计算特殊数字。

例如:var a=8.745;

        alert(a.toFixed(2));//8.74

        alert(a.toFixed(2));//8.74

        alert(a.toPrecision(3));//8.74

        alert(Math.floor(a*100)/100);//8.74

       alert(Math.round(a*100)/100);//8.74

原因是 alert(a*100);874.4999999999999

解决方案如下:

//计算两个数的乘法

function accMul(arg1,arg2){

              var m=0,s1=arg1.toString(),s2=arg2.toString();
              try{m+=s1.split(“.”)[1].length}catch(e){}
              try{m+=s2.split(“.”)[1].length}catch(e){}
              return Number(s1.replace(“.”,””))*Number(s2.replace(“.”,””))/Math.pow(10,m)
            }

//计算四舍五入,保留两位小数
        function keepTwoDecimal(num) {

             var result = parseFloat(num);
             if (isNaN(result)) {

             alert(‘传递参数错误,请检查!’);
             return false;
             }
             result = Math.round(accMul(num,100)) / 100;
             return result;
            }

 

alert(a);//8.745
        alert(keepTwoDecimal(a));//8.75

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/37117.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注