js小数乘法精度

思路:将小数*基数变成整数再计算,结果再除以基数
搜索整理了几种方法如下:

一、表达式解决
alert(1.1*(2.23*100)/100);

二、添加到Number的原型
<script>
Number.prototype.rate=function(){
var oStr=this.toString();
if(oStr.indexOf(".")==-1)
return 1;
else
return Math.pow(10,parseInt(oStr.length-oStr.indexOf(".")-1));
}
function tran(){
args=tran.arguments;
var temp=1;
for(i=0;i < args.length;i++)
temp*=args[ i ]*args[ i ].rate();
for(i=0;i < args.length;i++)
temp/=args[ i ].rate();
return temp;
}
</script>

使用方法:11*22.9,可以这样写tran(11,22.9)

三、拆分法
20*2.24=20*2+20*0.24


四、思路同一
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)).toFixed(2);
    }


你可能感兴趣的:(prototype)