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 相关文章推荐
由prototype_1.3.1进入javascript殿堂-类的初探
Nov 06 Javascript
JS的IE和Firefox兼容性集锦
Dec 11 Javascript
javascript跨域刷新实现代码
Jan 01 Javascript
JQuery.closest(),parent(),parents()寻找父结点
Feb 17 Javascript
利用Javascript仿Excel的数据透视分析功能
Sep 07 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
Apr 20 Javascript
jquery 禁止鼠标右键并监听右键事件
Apr 27 jQuery
JS获取字符对应的ASCII码实例
Sep 10 Javascript
Angular.js中window.onload(),$(document).ready()的写法浅析
Sep 28 Javascript
加载 vue 远程代码的组件实例详解
Nov 20 Javascript
详解从react转职到vue开发的项目准备
Jan 14 Javascript
JS中循环遍历数组的四种方式总结
Jan 23 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
PHPShop存在多个安全漏洞
2006/10/09 PHP
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
2011/11/07 PHP
详解PHP变量传值赋值和引用赋值变量销毁
2019/03/23 PHP
利用javascript实现一些常用软件的下载导航
2009/08/03 Javascript
jquery 图片 上一张 下一张 链接效果(续篇)
2010/04/20 Javascript
jquery.jstree 增加节点的双击事件代码
2010/07/27 Javascript
jquery等待效果示例
2014/05/01 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
2015/07/02 Javascript
jQuery实现图片文字淡入淡出效果
2015/12/21 Javascript
JavaScript学习笔记之取数组中最大值和最小值
2016/03/23 Javascript
详解Node.js如何开发命令行工具
2016/08/14 Javascript
VueJs与ReactJS和AngularJS的异同点
2016/12/12 Javascript
easyui简介_动力节点Java学院整理
2017/07/14 Javascript
vue中使用element-ui进行表单验证的实例代码
2018/06/22 Javascript
vue基于viewer实现的图片查看器功能
2019/04/12 Javascript
vue滚动固定顶部及修改样式的实例代码
2019/05/30 Javascript
解决layui使用layui-icon出现默认图标的问题
2019/09/11 Javascript
解决layui调用自定义方法提示未定义的问题
2019/09/14 Javascript
Python使用稀疏矩阵节省内存实例
2014/06/27 Python
Python SQLite3简介
2018/02/22 Python
redis之django-redis的简单缓存使用
2018/06/07 Python
OpenCV Python实现拼图小游戏
2020/03/23 Python
德国宠物用品、宠物食品及水族馆网上商店:ZooRoyal
2017/07/09 全球购物
台湾母婴用品限时团购:妈咪爱
2018/08/03 全球购物
英国比较机场停车场网站:Airport Parking Essentials
2019/12/01 全球购物
党员思想汇报范文
2013/12/30 职场文书
个人简历自我评价
2014/01/06 职场文书
会务接待方案
2014/02/27 职场文书
小学母亲节活动方案
2014/03/14 职场文书
敬老模范事迹
2014/05/21 职场文书
走群众路线剖析材料
2014/10/09 职场文书
村党的群众路线教育实践活动工作总结
2014/10/25 职场文书
龙潭大峡谷导游词
2015/02/10 职场文书
教师个人年终总结
2015/02/11 职场文书
新学期开学标语2015
2015/07/16 职场文书
MySQL创建管理KEY分区
2022/04/13 MySQL