转自:http://blog.csdn.net/z69183787/article/details/22469301

toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。通俗点就是传入的参数是几,那么我们的小数就保留几位。

eg: alert(0.056.toFixed(2));-->0.06

但是使用过程中发现了一个小问题 ,就是0.0056.toFixed(2)结果却为0.00

遂重写toFixed()

代码如下:

Js代码  收藏代码
  1. //重写toFixed方法  
  2. Number.prototype.toFixed=function(len)  
    {  
    var tempNum = 0;  
    var s, temp;  
    var s1 = this + "";  
    var start = s1.indexOf(".");  
            
  3. //截取小数点后,0之后的数字,判断是否大于5,如果大于5这入为1  
    if(s1.substr(start + len + 1, 1) >= 5){  
    tempNum = 1;
    }
      
    //计算10的len次方,把原数字扩大它要保留的小数位数的倍数  
    var temp = Math.pow(10, len);  

    //求最接近this * temp的最小数字  
    //floor() 方法执行的是向下取整计算,它返回的是小于或等于函数参数,并且与之最接近的整数  
    s = Math.floor(this * temp) + (this >= 0 ? tempNum : 0);  
    //注意:负数不要加tempNum

    //返回
    return s / temp;    
    }   

现在再试试alert(0.0056.toFixed(2));结果就为0.01啦!



本文转载:CSDN博客