DOBON.NET DOBON.NETプログラミング掲示板過去ログ

浮動小数点の減算について

環境/言語:[OS : Windows XP Professional / 言語 : Visual C# .NET / .NET Framework : 2.0]
分類:[.NET]

こんにちは。
いつもこちらのサイトにはお世話になっております。

初歩的な質問でしたらごめんなさい。
調べてもわからなかったので投稿させていただきます。

ある浮動少数点の数字からある数字を減算させた場合、計算されて返ってくる値が
一致し無いのはなぜでしょうか。

例:
double _A = 23.9d;
double _B = 23.0d;
double _C = 0.0d;

_C = _A - (int)_B;

結果:
0.899999999999999

0.9が返ってきてほしいのですが・・・
浮動小数点ですから、
>double _A = 23.9d;
は正確に値を保持でません。
(2進数で表せれない値はそれに近い値で表わされる)


よく理解できないのであれば、
「浮動小数点 誤差」
で検索してみてください。
なるほど!!

浮動小数点をただの小数点以下が格納できる型だと思ってました。
とても参考になりました。
ありがとうございます。
解決忘れてました・・・
解決済み!
ちなみに正確な値を扱いたいのであれば、(範囲は狭くなるけど)decimalをつかうとか。
http://msdn2.microsoft.com/ja-jp/library/364x0z75(VS.80).aspx
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板