js toFixed 四舍五入bug 重写toFIxed函数

2020-03-28  本文已影响0人  pengkiw

问题: 接口返回金额 50500 和 10500;前端把大于一万的金额 保留一位小数显示
            例如 50500 =》 5.1万;10500 =》 1.1万
            结果 出现下图结果

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+"";
 };

上一篇下一篇

猜你喜欢

热点阅读