js toFixed 四舍五入bug 重写toFIxed函数
问题: 接口返回金额 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+"";
};