javascript NUMBER toFixed()函数

来源:互联网 发布:什么是无线传感器网络 编辑:程序博客网 时间:2024/05/22 05:13

关于toFixed用途,及bug我就不赘述了,请看

http://www.cnblogs.com/jaxu/archive/2013/07/15/3191187.html


下面是我的修改方案

Number.prototype.toFixed=function(len){
var add = 0;
var s,temp;
var s1 = this + "";
var start = s1.indexOf(".");
if(start!=-1 && s1.substr(start+len+1,1) == "") return this/1;    //如果去掉这行  可以在控制台试试530.30.toFixed(2)  结果很惊喜哦
if(start!=-1 && s1.substr(start+len+1,1)>=5) add=1;
var temp = Math.pow(10,len);
s = Math.floor(this * temp) + add;
return s/temp;
}


有高手可以给我解释解释 不添加if(start!=-1 && s1.substr(start+len+1,1) == "") return this/1;  这行,为啥子530.30.toFixed(2)  怎么就变成了530.29呢?

都是醉了


没有考虑负数情况尴尬

Number.prototype.toFixed=function(len){
var add = 0;
   var s,temp;
   var s1 = this + "";
   var start = s1.indexOf(".");
   if(start!=-1 && s1.substr(start+len+1,1) == "") return this/1;
   if(start!=-1 && s1.substr(start+len+1,1)>=5) add=1;
   var temp = Math.pow(10,len);
   if (this > 0) {
     s = Math.floor(this * temp) + add;  
   }else{
     s = Math.ceil(this * temp) - add;  
   }
   return s/temp;
}

0 0
原创粉丝点击