当前位置:文章中心 >> Jquery_Ajax_Javascript
                             | 
                         
                     
                    
                        
                            
                                
                                    
                                        | 
                                               js toFixed().方法BUG解决
                                         | 
                                     
                                    
                                        | 
                                            夜鹰教程网 来源:www.yyjcw.com 日期:2016-10-16 8:56:45
                                         | 
                                     
                                 
                                
                                    
                                        | 
                                            但凡用过js 中的toFix() 方法的, 应该都知道这个方法存在一个小小的BUG。在IE 下和FF 下对于小数的进位有点不同。例如( 0.005)在ie 下 toFix(2)=0.00. 在FF 下 toFix(2)=0.01.
                                         | 
                                     
                                 
                                
                                    
                                        | 
                                              
 这篇文章不能解决你的问题?我们还有相关视频教程云课堂 全套前端开发工程师培训课程 微信号:yyjcw10000 QQ:1416759661  远程协助需要加QQ! 业务范围:视频教程|程序开发|在线解答|Demo制作|远程调试| 点击查看相关的视频教程。 技术范围:全端开发/前端开发/webapp/web服务/接口开发/单片机/C#/java/node/sql server/mysql/mongodb/android/。  
 
 
  
                                         | 
                                     
                                 
                                
                                    
                                        
                                            但凡用过js 中的toFix() 方法的, 应该都知道这个方法存在一个小小的BUG。  
在IE 下和FF 下对于小数的进位有点不同。 
例如( 0.005)在ie 下 toFix(2)=0.00. 在FF 下 toFix(2)=0.01. 
这样就会造成数据的差异。 
我们可以通过 重写 这个方法来实现精度的统一。 
 
        Number.prototype.toFixed = function(s) 
{ 
return (parseInt(this * Math.pow( 10, s ) + 0.5)/ Math.pow( 10, s )).toString(); 
} 
 
但是这样做仍然有一个问题, 在所有的浏览器下, String("0.050").toFix(2)=0.1 
我们可以看到这样你原本要保留两位小数却变成了一位。 也就是说。这个重写只有的toFixed() 会自动舍弃最后的0. 
我们需要对这个方法做进一步的处理。 
Number.prototype.toFixed = function(s) 
{ 
changenum=(parseInt(this * Math.pow( 10, s ) + 0.5)/ Math.pow( 10, s )).toString(); 
index=changenum.indexOf("."); 
if(index<0&&s>0){ 
changenum=changenum+"."; 
for(i=0;i<s;i++){ 
changenum=changenum+"0"; 
} 
    
   }else { 
index=changenum.length-index; 
for(i=0;i<(s-index)+1;i++){ 
 changenum=changenum+"0"; 
} 
   
   } 
   
    return  changenum; 
}
                                         | 
                                     
                                 
                                
                                
                                
                                
                             | 
                            
                                
                                
                                    
                                        
                                               热门服务/教程目录
                                         | 
                                     
                                    
                                        
                                             
                                            
                                            
                                                 客服电话:153 9760 0032
                                                购买教程QQ:1416759661  
                                            
                                         | 
                                     
                                 
                                
                                
                                
                                
                             | 
                         
                     
                 |