ホームページ >バックエンド開発 >C++ >浮動小数点数を使用する場合、C# で 10 進数値を正確に比較するにはどうすればよいですか?

浮動小数点数を使用する場合、C# で 10 進数値を正確に比較するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-22 20:57:13337ブラウズ

How Can I Accurately Compare Decimal Values in C# When Using Floating-Point Numbers?

C# での倍精度浮動小数点数の比較: 精度と精度の問題

C# で倍精度浮動小数点変数を使用する場合、開発者は、10 進数値を含む比較で予期しない結果に遭遇することがよくあります。このような問題の 1 つは、浮動小数点表現の基本的な特性から発生します。

浮動小数点問題

C# の

データ型は、浮動小数点値を格納するために、10 進数ではなく 2 進数を使用します。この表現には制限があり、一部の 10 進数値は正確に保存できません。たとえば、数値 0.1 は 2 進の小数として正確に表すことができません。これは近似値として保存されるため、わずかに異なる値になります。 double

解法: 10 進数型

この精度の欠如を克服するには、

の代わりに decimal データ型を使用することを検討してください。 double 10 進数表記を使用して数値を保存し、0.1 などの値を正確に表現できるようにします。これにより、decimal 値を比較するときに発生する問題が解消されます。 double

詳しい説明

浮動小数点数は、科学表記法と同様に、指数と仮数を使用して表現されます。ただし、基数 10 を使用する代わりに、基数 2 (2 進数表記) を使用します。

0.1 などの 10 進数値は反復しない 2 進数表現を持つため、基数 2 のシステムに正確に格納するのは困難です。その結果、

変数に格納される 0.1 のバイナリ近似値は、実際の値と若干異なる場合があります。 double

この微妙な違いにより、

ステートメントでの比較の不一致が発生する可能性があり、期待値 0.1 が格納されている値と一致しない可能性があります。 if データ型を使用すると、10 進数値の正確な保存と比較が保証されるため、これらの問題が回避されます。 decimal

以上が浮動小数点数を使用する場合、C# で 10 進数値を正確に比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。