详细解决方案
js浮点丢失有关问题
热度:530 发布时间:2013-07-08 14:13:00.0
js浮点丢失问题
- ??
-
Number.prototype.add?=?function(arg){ ??
-
????var?r1,r2,m; ??
-
????try{r1=this.toString().split(".")[1].length}catch(e){r1=0} ??
-
????try{r2=arg.toString().split(".")[1].length}catch(e){r2=0} ??
- ????m=Math.pow(10,Math.max(r1,r2)) ??
-
????return?(this*m+arg*m)/m ??
- } ??
- ?
-
??
-
Number.prototype.sub?=?function?(arg){ ??
-
????return?this.add(-arg); ??
- } ??
- ?
-
??
-
Number.prototype.mul?=?function?(arg) ??
- { ??
-
????var?m=0,s1=this.toString(),s2=arg.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) ??
- } ??
- ?
-
??
-
Number.prototype.div?=?function?(arg){ ??
-
????var?t1=0,t2=0,r1,r2; ??
-
????try{t1=this.toString().split(".")[1].length}catch(e){} ??
-
????try{t2=arg.toString().split(".")[1].length}catch(e){} ??
-
????with(Math){ ??
-
????????r1=Number(this.toString().replace(".","")) ??
-
????????r2=Number(arg.toString().replace(".","")) ??
-
????????return?(r1/r2)*pow(10,t2-t1); ??
- ????} ??
- }??
- <script?type="text/javascript"?language="javascript"> ??
-
???alert(Number(0.09999999).add(0.00000001));??
-
?????
-
???alert(Number(-0.09999999).sub(0.00000001));??
-
???alert(Number(0.012345).mul(0.000001));??
-
???alert(Number(0.000001).div(0.0001));??
- </script> ?