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 相关文章推荐
利用JQuery和JS实现奇偶行背景颜色自定义效果
Nov 19 Javascript
JS判断不同分辨率调用不同的CSS样式文件实现思路及测试代码
Jan 23 Javascript
ie 7/8不支持trim的属性的解决方案
May 23 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
May 26 Javascript
javascript验证手机号和实现星号(*)代替实例
Aug 16 Javascript
炫酷的js手风琴效果
Oct 13 Javascript
AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
Dec 13 Javascript
Canvas放置反弹效果随机图形(实例)
Aug 17 Javascript
JavaScript数组的5种迭代方法
Sep 29 Javascript
layui自定义插件citySelect实现省市区三级联动选择
Jul 26 Javascript
layui 数据表格 根据值(1=业务,2=机构)显示中文名称示例
Oct 26 Javascript
vue中jsonp插件的使用方法示例
Sep 10 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
农民和部队如何穿矿
2020/03/04 星际争霸
main.php
2006/12/09 PHP
php中理解print EOT分界符和echo EOT的用法区别小结
2010/02/21 PHP
PHP5多态性与动态绑定介绍
2015/04/03 PHP
PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例
2015/05/11 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
2015/06/03 PHP
Laravel中log无法写入问题的解决
2017/06/17 PHP
XMLHTTPRequest的属性和方法简介
2010/11/23 Javascript
基于JQuery的列表拖动排序实现代码
2013/10/01 Javascript
你可能不知道的JavaScript的new Function()方法
2014/04/17 Javascript
jquery中添加属性和删除属性
2015/06/03 Javascript
基于javascript实现动态显示当前系统时间
2016/01/28 Javascript
小白谈谈对JS原型链的理解
2016/05/03 Javascript
Bootstrap 组件之按钮(二)
2016/05/11 Javascript
Javascript之Number对象介绍
2016/06/07 Javascript
JQuery手速测试小游戏实现思路详解
2016/09/20 Javascript
jQuery与JavaScript节点创建方法的对比
2016/11/18 Javascript
bootstrap fileinput 上传插件的基础使用
2017/02/17 Javascript
vue配置font-awesome5的方法步骤
2019/01/27 Javascript
详解小程序横屏方案对比
2020/06/28 Javascript
Python多进程同步Lock、Semaphore、Event实例
2014/11/21 Python
Python产生Gnuplot绘图数据的方法
2018/11/09 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
2019/08/08 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
2020/01/15 Python
Python基于traceback模块获取异常信息
2020/07/23 Python
CK巴西官方网站:Calvin Klein巴西
2019/07/19 全球购物
建筑行业的大学生自我评价
2013/12/08 职场文书
个性车贴标语
2014/06/24 职场文书
2014年团支书工作总结
2014/11/14 职场文书
2015年学校体育工作总结
2015/04/22 职场文书
党委工作总结2015
2015/04/27 职场文书
2015年幼儿园中班下学期工作总结
2015/05/22 职场文书
青少年法制教育心得体会
2016/01/14 职场文书
2016天猫双十一广告语
2016/01/28 职场文书
python实现简单区块链结构
2021/04/25 Python
Html5获取用户当前位置的几种方式
2022/01/18 HTML / CSS