C# で倍精度浮動小数点変数を使用する場合、開発者は、10 進数値を含む比較で予期しない結果に遭遇することがよくあります。このような問題の 1 つは、浮動小数点表現の基本的な特性から発生します。
データ型は、浮動小数点値を格納するために、10 進数ではなく 2 進数を使用します。この表現には制限があり、一部の 10 進数値は正確に保存できません。たとえば、数値 0.1 は 2 進の小数として正確に表すことができません。これは近似値として保存されるため、わずかに異なる値になります。 double
の代わりに decimal
データ型を使用することを検討してください。 double
10 進数表記を使用して数値を保存し、0.1 などの値を正確に表現できるようにします。これにより、decimal
値を比較するときに発生する問題が解消されます。 double
0.1 などの 10 進数値は反復しない 2 進数表現を持つため、基数 2 のシステムに正確に格納するのは困難です。その結果、
変数に格納される 0.1 のバイナリ近似値は、実際の値と若干異なる場合があります。 double
ステートメントでの比較の不一致が発生する可能性があり、期待値 0.1 が格納されている値と一致しない可能性があります。 if
データ型を使用すると、10 進数値の正確な保存と比較が保証されるため、これらの問題が回避されます。 decimal
以上が浮動小数点数を使用する場合、C# で 10 進数値を正確に比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。