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 相关文章推荐
从数据结构分析看:用for each...in 比 for...in 要快些
Apr 17 Javascript
CSS3,HTML5和jQuery搜索框集锦
Dec 02 Javascript
分享2个jQuery插件--jquery.fileupload与artdialog
Dec 26 Javascript
JavaScript整除运算函数ceil和floor的区别分析
Apr 14 Javascript
轻松学习jQuery插件EasyUI EasyUI创建RSS Feed阅读器
Nov 30 Javascript
BootstrapTable refresh 方法使用实例简单介绍
Feb 20 Javascript
详解vue-cli官方脚手架配置
Jul 20 Javascript
详解webpack 热更新优化
Sep 13 Javascript
详解VUE Element-UI多级菜单动态渲染的组件
Apr 25 Javascript
JS数组中对象去重操作示例
Jun 04 Javascript
JavaScript ECMA-262-3 深入解析(二):变量对象实例详解
Apr 25 Javascript
js实现限定区域范围拖拉拽效果
Nov 20 Javascript
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
PHP函数按引用传递参数及函数可选参数用法示例
2018/06/04 PHP
thinkPHP5框架路由常用知识点汇总
2019/09/15 PHP
关于laravel框架中的常用目录路径函数
2019/10/23 PHP
RGB颜色值转HTML十六进制(HEX)代码的JS函数
2009/04/25 Javascript
实现点击列表弹出列表索引的两种方式
2013/03/08 Javascript
jquery+html5制作超酷的圆盘时钟表
2015/04/14 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
2015/12/15 Javascript
JavaScript实现字符串与日期的互相转换及日期的格式化
2016/03/07 Javascript
node安装--linux下的快速安装教程
2017/03/21 Javascript
使用Vue.js和Flask来构建一个单页的App的示例
2018/03/21 Javascript
js实现删除li标签一行内容
2019/04/16 Javascript
Easyui 去除jquery-easui tab页div自带滚动条的方法
2019/05/10 jQuery
vue h5移动端禁止缩放代码
2019/10/28 Javascript
在Vue mounted方法中使用data变量详解
2019/11/05 Javascript
浅谈Vue 自动化部署打包上线
2020/06/14 Javascript
three.js中多线程的使用及性能测试详解
2021/01/07 Javascript
Windows系统下安装Python的SSH模块教程
2015/02/05 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
2018/06/04 Python
利用python计算时间差(返回天数)
2019/09/07 Python
Python while循环使用else语句代码实例
2020/02/07 Python
Python unittest基本使用方法代码实例
2020/06/29 Python
关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题
2020/11/24 Python
Python 实现二叉查找树的示例代码
2020/12/21 Python
英国高端食品和葡萄酒超市:Waitrose
2016/08/23 全球购物
德国净水壶和滤芯品牌:波尔德PearlCo(家用净水器)
2020/04/29 全球购物
安全标准化汇报材料
2014/02/03 职场文书
研讨会主持词
2014/04/02 职场文书
小学教师师德演讲稿
2014/05/06 职场文书
党支部换届选举方案
2014/05/08 职场文书
党员群众路线教育实践活动学习笔记
2014/11/05 职场文书
家庭经济困难证明
2015/06/23 职场文书
某某店铺的开业庆典主持词范本
2019/11/25 职场文书
React配置子路由的实现
2021/06/03 Javascript
深入理解mysql事务隔离级别和存储引擎
2022/04/12 MySQL
使用CSS实现六边形的图片效果
2022/08/05 HTML / CSS
Go结合Gin导出Mysql数据到Excel表格
2022/08/05 Golang