以下为引用的内容: <script> alert(11*22.9) </script> |
结果是251.89999999999998 而不是251.9
这个问题想必有很多人为之头痛。那么如何解决呢?在此给出解决办法。解决问题的大概思路就是,先把因数放大为整数,最后再除以相应的倍数,这样就能得到正确的结果了。
以下为引用的内容: <script defer> 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 } alert(tran(11,22.9)); </script> |
该解决办法是比较麻烦的办法,但是却能让你大概了解解决这个问题的实际过程。