私はC++初心者で、最近ようやく出力結果の桁数が多いと誤差がでることを知りました。
しかし計算結果の数字が何処まで有効であるかが分かりません。
型によっても変わるのだと思いますが、有効桁数を調べる方法はありますか。
また、計算結果の信頼性を調べるにはどのような方法をとればよいでしょうか。
よろしければ教えて下さい(>_<)お願いします。
> 私はC++初心者で、最近ようやく出力結果の桁数が多いと誤差がでることを知りまし
た。
> しかし計算結果の数字が何処まで有効であるかが分かりません。
おそらく浮動小数点のことだと思いますので、「浮動小数点」をキーワードに
Googleで調べてみるといろいろとでてくると思います。
例えばWikiなど
< http://ja.wikipedia.org/wiki/%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%
95%B0>
で、計算結果というよりも、小数を扱った時点で、誤差が生じます。
0.1でも誤差があり、厳密には0.1に10をかけても1.0にはなりませんので。
#少し、自信がない部分もありますので、識者の方々フォローをお願いします。
2進数で小数を表現するとどうなるか考えてみるとよろしい
用途は何ですか。
たんに計算をして状況を掴むだけなら「浮動小数点」で十分だと思います。
計算結果を利用して判定等を行う時は、「浮動小数点」の誤差が問題になると
思います。
対策として、
1. 必要小数点分をかけて一度整数にします。
2. 再び必要小数点分で割って浮動小数点に戻します。
例
2桁の場合
100をかけて、100で割ります。
それでも駄目な場合、固定小数点を利用します。
.netとVBが対応しています。
MFCは、専用関数で行っているみたいです。