js で toFix() メソッドを使用したことのある人は、このメソッドに小さなバグがあることを知っているはずです。
小数点以下の桁上げは、IE と FF では少し異なります。
たとえば、(0.005) toFix(2)=0.00 (FF では toFix(2)=0.01)。
これによりデータに差異が生じます。
このメソッドをオーバーライドすることで精度の統一を実現できます。
次のようにコードをコピーします。
Number.prototype.toFixed = 関数
{
return (parseInt(this * Math.pow( 10, s ) + 0.5)/ Math.pow( 10, s )).toString();
}
しかし、これにはまだ問題があり、すべてのブラウザで String("0.050").toFix(2)=0.1 になります。
当初は小数点以下 2 桁を保持するつもりでしたが、最終的には小数点以下 1 桁になったことがわかります。 つまり。このオーバーライドは toFixed() のみが最後の 0 を自動的に破棄します。
このメソッドに対してさらに処理を行う必要があります。
次のようにコードをコピーします。
Number.prototype.toFixed = 関数
{
Changenum=(parseInt(this * Math.pow( 10, s ) + 0.5)/ Math.pow( 10, s )).toString();
インデックス=changenum.indexOf(".");
if(インデックス<0&&s>0){
変更番号=変更番号+".";
for(i=0;i<s;i++){
変更番号=変更番号+"0";
}
}それ以外 {
インデックス=変更番号.長さのインデックス;
for(i=0;i<(s-index)+1;i++){
変更番号=変更番号+"0";
}
}
変更番号を返します。
}