js toFixed()方法的重写实现精度的统一

2014-03-06 22

但凡用过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; 
}
展开阅读全文

更多Javascript文章

jQuery旋转插件—rotate支持(ie/Firefox/SafariOpera/Chrome)
Jan 16 22
js setTimeout 参数传递使用介绍
Aug 13 24
jQuery实现非常实用漂亮的select下拉菜单选择效果
Nov 06 30
ES6 中可以提升幸福度的小功能
Aug 06 27
浅谈JavaScript闭包
Apr 09 24
如何使用CSS3和JQuery easing 插件制作绚丽菜单
Jun 18 17
如何使用RoughViz可视化Vue.js中的草绘图表
Jan 30 31
手机访问当前页面