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);
}