美文网首页
js toFixed 四舍五入bug 重写toFIxed函数

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

作者: pengkiw | 来源:发表于2020-03-28 14:22 被阅读0次

    问题: 接口返回金额 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+"";
     };

    相关文章

      网友评论

          本文标题:js toFixed 四舍五入bug 重写toFIxed函数

          本文链接:https://www.haomeiwen.com/subject/srnjuhtx.html