.NET 倍精度乗算の不正確さについて理解する
.NET の「倍精度」という用語は誤解を招く可能性があります。 倍精度浮動小数点演算は、必ずしも完全に正確であるとは限りません。一般的な例を見てみましょう:
<code>double i = 10 * 0.69;</code>
期待される 6.9 の代わりに、結果は 6.8999999999999995 になることがよくあります。この不正確さは、浮動小数点数の表現方法と保存方法に起因します。
Double は、他の浮動小数点型と同様に、特定のバイナリ形式を使用して実数を近似します。 0.69 や 1/3 などの多くの 10 進数値は、固有の制限により、このバイナリ形式では正確に表現できません。
コンパイラは通常、コンパイル時に乗算を最適化し、結果を定数として保存します。 ただし、6.9 には正確なバイナリ表現がないため、保存される定数は近似値です。
これを軽減するには、パフォーマンスは低下しますが、より高い精度を提供する decimal
タイプの使用を検討してください。 非常に高い精度を必要とするアプリケーションの場合、BigRational
などの有理数サポートを提供するライブラリが代替アプローチを提供します。
以上が.NET の二重乗算が不正確になるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。