本文和大家重点讨论一下JS浮点溢出的两种解决方案,一种就是是调用一个自定义的处理函数,两外一种方法就是使用toFixed方法返回一个以定点表示法表示的数字的字符串形式,请看下文详细介绍。
JS浮点溢出的两种解决方案
请运行以下代码,发现了什么。这就是JS浮点溢出。
<scripttypescripttype="text/javascript">
vara=38.8;
varb=6.8;
alert(a-b);
vara=134.22;
varb=6;
alert(a*b);
</script>
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
JS浮点溢出有2中解决方案:
◆第一个调用一个处理函数
functionoverflow(a,h,b)
{if(a.toString().indexOf(".")
<0&&b.toString().indexOf(".")<0){returneval(a+h+b);
}varalen=a.toString().split(".");if(alen.length==1){
alen=0;}else{alenalen=alen[1].length;
}varblen=b.toString().split(".");if(blen.length==1){
blen=0;}else{
blenblen=blen[1].length;}if(blen>alen)alen=blen;blen="1";
for(;alen>0;alen--){blenblen=blen+"0";
}switch(h){case"+":return(a*blen+b*blen)/blen;
break;case"-":return(a*blen-b*blen)/blen;
break;case"*":return((a*blen)*(b*blen))/(blen*blen);
break;default:return0;}}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
◆第二个使用toFixed方法返回一个以定点表示法表示的数字的字符串形式
再运行以下代码看看
<scripttypescripttype="text/javascript">
vara=38.8;
varb=6.8;
alert(overflow(a,"-",b));
vara=134.22;
varb=6;
alert((a*b).toFixed(2));
</script>
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
【编辑推荐】
- IE6、IE7、IE8三大浏览器兼容性对比
- 兼容IE6,IE7,IE8,Firefox的CSS HACK写法
- IE6,IE7,火狐浏览器兼容性写法
- 完美实现IE6/IE7/FF浏览器兼容通用方法
- 解析Linux下如何用eclipse搭建J2ME开发环境