ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript の浮動小数点演算で予期しない結果が生じるのはなぜですか?これを解決するにはどうすればよいですか?

JavaScript の浮動小数点演算で予期しない結果が生じるのはなぜですか?これを解決するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-01 08:14:11
オリジナル
138 人が閲覧しました

Why Does JavaScript's Floating-Point Arithmetic Produce Unexpected Results, and How Can I Solve This?

JavaScript の浮動小数点精度の落とし穴と解決策

JavaScript の浮動小数点演算は、予期しない結果を引き起こすことがあります。次のコードを考えてみましょう:

function test() {
  var x = 0.1 * 0.2;
  document.write(x);
}
test();
ログイン後にコピー

予想される 0.02 の代わりに、0.020000000000000004 が出力されます。この不一致は、10 進数を 2 進浮動小数点値として表現する際の固有の不正確さに起因します。

エレガントな解決策

丸め関数に頼らずにこの問題に対処するには、次のようにします。いくつかのオプションがあります:

  • 次のような特殊な 10 進ライブラリを使用します。 JavaScript または DecimalJS 用の BigDecimal。正確な 10 進数の計算を保証します。
  • ドルの代わりにセントを操作することにより、特に金融計算の場合に整数演算に変換します。ただし、このアプローチには追加の処理が必要であり、欠点もあります。

実際的な考慮事項

最初のオプションは最も高い精度を提供しますが、次の場合には精度が高すぎる可能性があります。ほとんどのユースケース。このような場合は、結果を表示するときに単純に小数点以下の桁数を固定して書式設定することを検討してください。

浮動小数点精度の制限は JavaScript に固有のものではないことを理解することが重要です。これらは、2 進浮動小数点演算を使用するすべてのプログラミング言語に適用されます。重要なのは、アプリケーションの精度要件に基づいて適切なソリューションを選択することです。

要約すると、JavaScript で浮動小数点精度に対処するには、必要な精度を慎重に検討し、特定のユースケースに最適なアプローチを選択する必要があります。 .

以上がJavaScript の浮動小数点演算で予期しない結果が生じるのはなぜですか?これを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート