最近、JS の toFixed() メソッドにいくつかの問題があることを発見しました。ネイティブ Number オブジェクトのプロトタイプ オブジェクトで toFixed() メソッドを使用する場合、ルールはいわゆる「丸め」または「丸め」ではありません。 5」、いわゆる「「6 を四捨五入し、5 を四捨五入して均等にする」のことです。百度百科事典の説明では、「4 を 6 に四捨五入し、5 を四捨五入して均等にする」となります。 「4」は 4 以下の場合は四捨五入、「6」は 6 以上の場合は四捨五入を意味します。 上記の「5」は 5 以降の数値を指します。5 の後に数値がある場合は 5 が 1 に切り上げられます。 5 より後の有効な数字については、2 つの状況を考慮する必要があります: ① 5 より前の数値が奇数の場合、5 を四捨五入します。 1 を入力します。 ② 5 より前の数値は偶数で、5 は四捨五入されません。 (0 は最小の偶数です)。百度百科事典に記載されているいくつかの例は、実際の状況では確かに当てはまりますが、科学的ではなく、すべての状況をカバーできるわけではありません。
テスト ブラウザ: Diaosi ブラウザ IE6 および高度な Diaosi ブラウザ IE78、および IE9、IE10、FF、chrome、opera、safari を含むすべての最新の主流ブラウザ。 (注: IE10 のような Firebug 開発ツールを使用する場合、互換性のある IE の下位バージョンのブラウザ モードを使用したときのテスト結果は、ネイティブの下位バージョンの IE ブラウザを使用したテスト結果と一致しません)
フローティングの最後にポイント数 ≤ 数値が 4 または ≥ 6 の場合、丸めについて議論はありませんが、末尾が 5 に正確に等しい場合は、非常に混乱を招きます。
概要: ご存知のとおり、IEEE754 数値形式に従う言語での浮動小数点計算では精度の低下が発生します。この問題は ES だけではないため、特定の浮動小数点をテストしないようにしてください。値 (例: 0.1 0.2;
解決策: Number.prototype.toFixed() メソッドをオーバーライドします。