vue解决toFixed精度问题

1、js中的toFixed()方法可把 Number 四舍五入为指定小数位数的数字。

但是目前js自带的toFixed方法存在四舍五入的精度问题

例如var a=8.745;

alert(a.toFixed(2));//8.74

解决方案如下:

在main.js中写入以下方法

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

};

 

这个时候输入a.toFixed(2),你会发现变成了8.75

金烽网络分享最优质的的资源,涵盖网站建设、IT技术、主题源码
金烽网络 » vue解决toFixed精度问题

发表评论