最近发现JS当中toFixed()方法存在一些问题,采用原生的Number对象的原型对象上的toFixed()方法时,规则并不是所谓的“四舍五入”。
原文见 https://www.cnblogs.com/wangsaiming/p/4644790.html
<script type=``"text/javascript"``>
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``+``""``;
};
</script>