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


Posted in Javascript onMarch 06, 2014

但凡用过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 相关文章推荐
ASP SQL防注入的方法
Dec 25 Javascript
ExtJS 2.0实用简明教程 之Border区域布局
Apr 29 Javascript
(跨浏览器基础事件/浏览器检测/判断浏览器)经验代码分享
Jan 24 Javascript
Javascript中的匿名函数与封装介绍
Mar 15 Javascript
详解Javascript几种跨域方式总结
Feb 27 Javascript
JS实现加载和读取XML文件的方法详解
Apr 24 Javascript
javascript+html5+css3自定义提示窗口
Jun 21 Javascript
微信小程序模拟cookie的实现
Jun 20 Javascript
vue中导出Excel表格的实现代码
Oct 18 Javascript
vue使用原生js实现滚动页面跟踪导航高亮的示例代码
Oct 25 Javascript
微信小程序HTTP接口请求封装的实现
Feb 21 Javascript
前端Vue项目详解--初始化及导航栏
Jun 24 Javascript
button没写type=button会导致点击时提交
Mar 06 #Javascript
使用jQuery时Form表单元素ID和name命名大忌
Mar 06 #Javascript
js字符串日期yyyy-MM-dd转化为date示例代码
Mar 06 #Javascript
浅析JS中document对象的一些重要属性
Mar 06 #Javascript
浅析jquery的js图表组件highcharts
Mar 06 #Javascript
JavaScript利用构造函数和原型的方式模拟C#类的功能
Mar 06 #Javascript
javascript简单实现命名空间效果
Mar 06 #Javascript
You might like
PHP zlib扩展实现页面GZIP压缩输出
2010/06/17 PHP
解读PHP中上传文件的处理问题
2016/05/29 PHP
PHP进行批量任务处理不超时的解决方法
2016/07/11 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
2017/11/20 PHP
jQuery的12招常用技巧分享
2011/08/08 Javascript
有关于eclipse配置spket需要注意的一些地方
2013/04/07 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
2013/06/09 Javascript
同域jQuery(跨)iframe操作DOM(实例讲解)
2013/12/19 Javascript
js实现动态改变字体大小代码
2014/01/02 Javascript
node.js中的path.sep方法使用说明
2014/12/08 Javascript
优化RequireJS项目的相关技巧总结
2015/07/01 Javascript
iframe跨域通信封装详解
2015/08/11 Javascript
基于jquery实现三级下拉菜单
2016/05/10 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
2016/05/24 Javascript
jquery按回车键实现表单提交的简单实例
2016/05/25 Javascript
全面解析Bootstrap中Carousel轮播的使用方法
2016/06/13 Javascript
Jquery和BigFileUpload实现大文件上传及进度条显示
2016/06/27 Javascript
深入理解JavaScript 中的匿名函数((function() {})();)与变量的作用域
2018/08/28 Javascript
基于layui的table插件进行复选框联动功能的实现方法
2019/09/19 Javascript
基于Python对象引用、可变性和垃圾回收详解
2017/08/21 Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
2018/01/09 Python
解决python opencv无法显示图片的问题
2018/10/28 Python
对python调用RPC接口的实例详解
2019/01/03 Python
python3将变量写入SQL语句的实现方式
2020/03/02 Python
Pycharm激活方法及详细教程(详细且实用)
2020/05/12 Python
解决numpy矩阵相减出现的负值自动转正值的问题
2020/06/03 Python
解决Python安装cryptography报错问题
2020/09/03 Python
python -v 报错问题的解决方法
2020/09/15 Python
高街生活方式全球在线商店:AZBRO
2017/08/26 全球购物
追悼会上的答谢词
2014/01/10 职场文书
大学生社会实践活动总结
2014/07/03 职场文书
小学四年级学生评语
2014/12/26 职场文书
天下第一关导游词
2015/02/06 职场文书
教师个人年度总结
2015/02/11 职场文书
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android
索尼ICF-5900W收音机测评
2022/04/24 无线电