javascript之对系统的toFixed()方法的修正


Posted in Javascript onMay 08, 2007

0.009.toFixed(2)本该返回0.01的结果,可它却返回了一个0.00,这是这个方法的一个BUG,且这个方法对客户端的JS版本要求有点偏高,至少在IE5.0里这个方法用不起来,所以我写了上面的一段修正代码,并且还解决了这个BUG的问题。若是想完全使用这个自定义的方法替代那个有BUG的系统方法的话,只需要去掉最外层的那个 if 判断就可以了。 

//by meizz

if(typeof(Number.prototype.toFixed)!="function")
{

  Number.prototype.toFixed=function (d)
  {

    var s=this+"";
    if(!d)d=0;    
    if(s.indexOf(".")==-1)s+=".";
    s+=new Array(d+1).join("0");    
    if(new RegExp("^(-|\\+)?(\\d+(\\.\\d{0,"+(d+1)+"})?)\\d*$").test(s))
    {

      var s="0"+RegExp.$2,pm=RegExp.$1,a=RegExp.$3.length,b=true;      
      if(a==d+2){
        a=s.match(/\d/g);
        if(parseInt(a[a.length-1])>4)
        {

          for(var i=a.length-2;i>=0;i--){
            a[i]=parseInt(a[i])+1;            
            if(a[i]==10){
              a[i]=0;
              b=i!=1;

            }else break;

          }

        }
        s=a.join("").replace(new RegExp("(\\d+)(\\d{"+d+"})\\d$"),"$1.$2");        

      }if(b)s=s.substr(1);
      return (pm+s).replace(/\.$/,"");

    }return this+"";    

  };  


Javascript 相关文章推荐
javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果)
Aug 15 Javascript
jQuery创建自定义的选择器用以选择高度大于100的超链接实例
Mar 18 Javascript
JQUERY实现网页右下角固定位置展开关闭特效的方法
Jul 27 Javascript
RequireJS使用注意细节
May 15 Javascript
JS组件Bootstrap Table使用实例分享
May 30 Javascript
json格式的javascript对象用法分析
Jul 04 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
Sep 08 Javascript
整理一些最近经常遇到的前端面试题
Apr 25 Javascript
JavaScript函数表达式详解及实例
May 05 Javascript
vue实现文件上传读取及下载功能
Nov 17 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
Jul 21 Javascript
vue 插槽简介及使用示例
Nov 19 Vue.js
javascript之大字符串的连接的StringBuffer 类
May 08 #Javascript
Javascript中的数学函数集合
May 08 #Javascript
简单的无缝滚动程序-仅几行代码
May 08 #Javascript
JavaScript多线程的实现方法
May 08 #Javascript
(转载)JavaScript中匿名函数,函数直接量和闭包
May 08 #Javascript
阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
May 08 #Javascript
延时重复执行函数 lLoopRun.js
May 08 #Javascript
You might like
cmd下运行php脚本
2008/11/25 PHP
fetchAll()与mysql_fetch_array()的区别详解
2013/06/05 PHP
php开发微信支付获取用户地址
2015/10/04 PHP
PHP扩展Memcache分布式部署方案
2015/12/06 PHP
WordPress主题中添加文章列表页页码导航的PHP代码实例
2015/12/22 PHP
PHP 断点续传实例详解
2017/11/11 PHP
JavaScript中的私有成员
2006/09/18 Javascript
仅用[]()+!等符号就足以实现几乎任意Javascript代码
2010/03/01 Javascript
Jquery.TreeView结合ASP.Net和数据库生成菜单导航条
2010/08/27 Javascript
制作jquery遮罩层效果导航菜单代码分享
2013/12/25 Javascript
jQuery中hide()方法用法实例
2014/12/24 Javascript
jQuery实现带玻璃流光质感的手风琴特效
2015/11/20 Javascript
json定义及jquery操作json的方法
2016/09/29 Javascript
使用vue实现点击按钮滑出面板的实现代码
2017/01/10 Javascript
javascript实现滑动解锁功能
2017/03/22 Javascript
vue2.0父子组件间通信的实现方法
2017/04/19 Javascript
AngularJS 验证码60秒倒计时功能的实现
2017/06/05 Javascript
一文了解vue-router之hash模式和history模式
2019/05/31 Javascript
jQuery实现本地存储
2020/12/22 jQuery
[03:26]《DAC最前线》之EG经理自述DOTA2经历
2015/02/02 DOTA
Python使用文件锁实现进程间同步功能【基于fcntl模块】
2017/10/16 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
2019/08/12 Python
pytorch多进程加速及代码优化方法
2019/08/19 Python
使用matlab或python将txt文件转为excel表格
2019/11/01 Python
django中url映射规则和服务端响应顺序的实现
2020/04/02 Python
基于html5 DeviceOrientation 实现微信摇一摇功能
2015/09/25 HTML / CSS
Vivo俄罗斯官方在线商店:中国智能手机品牌
2019/10/04 全球购物
斯洛伐克最大的婴儿食品和用品网上商店:Feedo.sk
2020/12/21 全球购物
求∏的近似值,直到最后一项的绝对值小于指定的数
2016/02/12 面试题
大学生求职简历的自我评价范文
2013/10/12 职场文书
新学期决心书
2014/03/11 职场文书
大学生推广普通话演讲稿
2014/09/21 职场文书
单位授权委托书范本
2014/09/26 职场文书
大国崛起英国观后感
2015/06/02 职场文书
2019入党申请书范文3篇
2019/08/21 职场文书
如何使用Python实现一个简易的ORM模型
2021/05/12 Python