js toFixed()方法の書き換えは精度の統一を実現します。

1093 ワード

jsの中のToFix()の方法を使ったことがあるならば、すべてこの方法が1つの小さいBUGが存在することを知っているべきです。IEの下とFFの下では小数の進数に対してはちょっと違います。例えば(0.005)ieの下でtoFix(2)=0.00.FFの下でtoFix(2)=0.01.これはデータの違いを引き起こす。この方法を書き換えることによって精度の統一を実現することができます。
 
Number.prototype.toFixed = function(s)
{
return (parseInt(this * Math.pow( 10, s ) + 0.5)/ Math.pow( 10, s )).toString();
}
ですが、それでも問題があります。すべてのブラウザでStering("0.050").toFix(2)=0.1はこのようにして、あなたが本来2桁の小数を保持するつもりだったが、1位になりました。つまり。この書き換えだけのtoFixed()は最後の0を自動的に破棄します。この方法に対してさらなる処理が必要です。
 
Number.prototype.toFixed = function(s)
{
changenum=(parseInt(this * Math.pow( 10, s ) + 0.5)/ Math.pow( 10, s )).toString();
index=changenum.indexOf(".");
if(index<0&&s>0){
changenum=changenum+".";
for(i=0;i<s;i++){
changenum=changenum+"0";
}

}else {
index=changenum.length-index;
for(i=0;i<(s-index)+1;i++){
changenum=changenum+"0";
}

}

return changenum;
}