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 相关文章推荐
js版本A*寻路算法
Dec 22 Javascript
ASP.NET中使用后端代码注册脚本 生成JQUERY-EASYUI的界面错位的解决方法
Jun 12 Javascript
jQuery实现网页顶部固定导航效果代码
Dec 24 Javascript
js实现的页面矩阵图形变换特效
Jan 26 Javascript
Jquery和BigFileUpload实现大文件上传及进度条显示
Jun 27 Javascript
JS正则替换去空格的方法
Mar 24 Javascript
解决Mac node版本升级失败的问题
May 16 Javascript
JavaScript事件发布/订阅模式原理与用法分析
Aug 21 Javascript
微信小程序使用template标签实现五星评分功能
Nov 03 Javascript
iview tabs 顶部导航栏和模块切换栏的示例代码
Mar 04 Javascript
Vue v-text指令简单使用方法示例
Sep 19 Javascript
解决vue初始化项目一直停在downloading template的问题
Nov 09 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实现mysql数据库备份类
2008/03/20 PHP
解决文件名解压后乱码的问题 将文件名进行转码的代码
2012/01/10 PHP
PHP根据传来的16进制颜色代码自动改变背景颜色
2014/06/13 PHP
JavaScript创建命名空间的5种写法
2014/06/24 PHP
作为程序员必知的16个最佳PHP库
2015/12/09 PHP
使用CSS样式position:fixed水平滚动的方法
2014/02/19 Javascript
轻松创建nodejs服务器(1):一个简单nodejs服务器例子
2014/12/18 NodeJs
Nodejs学习笔记之NET模块
2015/01/13 NodeJs
JQuery中attr方法和removeAttr方法用法实例
2015/05/18 Javascript
在JavaScript中使用开平方根的sqrt()方法
2015/06/15 Javascript
可以浮动某个物体的jquery控件用法实例
2015/07/24 Javascript
jQuery满屏焦点图左右滚动特效代码分享
2015/09/07 Javascript
jQuery实现移动端手机商城购物车功能
2016/09/24 Javascript
JS实现数组去重复值的方法示例
2017/02/18 Javascript
关于jQuery中fade(),show()起始位置的一点小发现
2017/04/25 jQuery
JS实现问卷星自动填问卷脚本并在两秒自动提交功能
2020/06/17 Javascript
react 应用多入口配置及实践总结
2018/10/17 Javascript
如何利用JavaScript编写更好的条件语句详解
2020/08/10 Javascript
python和C语言混合编程实例
2014/06/04 Python
python 同时运行多个程序的实例
2019/01/07 Python
Python中文编码知识点
2019/02/18 Python
Python3.7 读取 mp3 音频文件生成波形图效果
2019/11/05 Python
Python时间差中seconds和total_seconds的区别详解
2019/12/26 Python
python设置代理和添加镜像源的方法
2020/02/14 Python
基于PyTorch的permute和reshape/view的区别介绍
2020/06/18 Python
Python加速程序运行的方法
2020/07/29 Python
css3边框_动力节点Java学院整理
2017/07/11 HTML / CSS
印度婴儿用品在线商店:Firstcry.com
2016/12/05 全球购物
ONLY德国官方在线商店:购买时尚女装
2017/09/21 全球购物
学生检讨书如何写
2014/10/30 职场文书
杭州西湖英语导游词
2015/02/03 职场文书
培训通知书模板
2015/04/17 职场文书
民事撤诉申请书范本
2015/05/18 职场文书
离婚起诉书范本
2015/05/18 职场文书
启动Tomcat时出现大量乱码的解决方法
2021/06/21 Java/Android
Elasticsearch 批量操作
2022/04/19 Python