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 相关文章推荐
jquery的颜色选择插件实例代码
Oct 02 Javascript
分页栏的web标准实现
Nov 01 Javascript
JS中Iframe之间传值的方法
Mar 11 Javascript
jquery实现带单选按钮的表格行选中时高亮显示
Aug 01 Javascript
jquery实现华丽的可折角广告代码
Sep 02 Javascript
js行号显示的文本框实现效果(兼容多种浏览器 )
Oct 23 Javascript
jQuery+json实现的简易Ajax调用实例
Dec 14 Javascript
Node.js环境下JavaScript实现单链表与双链表结构
Jun 12 Javascript
深入讲解xhr(XMLHttpRequest)/jsonp请求之abort
Jul 26 Javascript
浅谈Vue.js应用的四种AJAX请求数据模式
Aug 30 Javascript
Vue Extends 扩展选项用法完整实例
Sep 17 Javascript
Vue3 源码导读(推荐)
Oct 14 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
Mac系统下使用brew搭建PHP(LNMP/LAMP)开发环境
2015/03/03 PHP
Laravel中日期时间处理包Carbon的简单使用
2017/09/21 PHP
一些mootools的学习资源
2010/02/07 Javascript
基于jQuery的左右滚动实现代码
2010/12/03 Javascript
初学js 新节点的创建 删除 的步骤
2011/07/04 Javascript
addEventListener和attachEvent二者绑定的执行函数中的this不相同
2012/12/09 Javascript
JavaScript实现点击按钮后变灰避免多次重复提交
2013/07/15 Javascript
JS获取当前网址、主机地址项目根路径
2013/11/19 Javascript
javascript 终止函数执行操作
2014/02/14 Javascript
js实现鼠标感应向下滑动隐藏菜单的方法
2015/02/20 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
2015/05/25 Javascript
JavaScript中的anchor()方法使用详解
2015/06/08 Javascript
深入剖析javascript中的exec与match方法
2016/05/18 Javascript
百度多文件异步上传控件webuploader基本用法解析
2016/11/07 Javascript
使用纯JS代码判断字符串中有多少汉字的实现方法(超简单实用)
2016/11/12 Javascript
有关suggest快速删除后仍然出现下拉列表的bug问题
2016/12/02 Javascript
Vue.js学习之过滤器详解
2017/01/22 Javascript
angular十大常见问题
2017/03/07 Javascript
nodejs实现邮件发送服务实例分享
2017/03/29 NodeJs
JS 调试中常见的报错问题解决方法
2017/05/20 Javascript
详解基于webpack2.x的vue2.x的多页面站点
2017/08/21 Javascript
AngularJS 将再发布一个重要版本 然后进入长期支持阶段
2018/01/31 Javascript
vue组件传值的实现方式小结【三种方式】
2020/02/05 Javascript
vue项目中js-cookie的使用存储token操作
2020/11/13 Javascript
jquery实现鼠标悬浮弹出气泡提示框
2020/12/23 jQuery
python实现linux服务器批量修改密码并生成execl
2014/04/22 Python
Python实现1-9数组形成的结果为100的所有运算式的示例
2017/11/03 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
2020/01/14 Python
Python 给下载文件显示进度条和下载时间的实现
2020/04/02 Python
读取nii或nii.gz文件中的信息即输出图像操作
2020/07/01 Python
基于HTML5的齿轮动画特效
2016/02/29 HTML / CSS
物业管理专业自荐信
2014/07/01 职场文书
2014年优秀班主任工作总结
2014/12/16 职场文书
Opencv中cv2.floodFill算法的使用
2021/06/18 Python
Mybatis-plus在项目中的简单应用
2021/07/01 Java/Android
Redis实战高并发之扣减库存项目
2022/04/14 Redis