JS jscript做小数乘法运算出现浮点错误的解决办法
在Javascript里计算小数乘法,容易出现浮点错误,例如:
- <script>
- document.write (1.1*1.3);
- document.write ("<br>");
- document.write (1.2*1.1);
- </script>
输出结果:
- 1.4300000000000001
- 1.32
解决问题的思路就是,先把因数放大为整数,最后再除以相应的倍数,这样就能得到正确的结果了。解决办法如下:
1、 在算式中解决
- <script>
- alert(1.1*(1.3*10)/10);
- </script>
2、添加到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></script>
使用方法:假如11*22.9,可以这样写tran(11,22.9),这样,问题就解决了。