dounle型で計算時の誤差
今、VC++(MFC)で、15桁の数値まで表示可能な電卓アプリを作成しています。
そこで今つまずいているのが、double型で計算したとき(演算結果が小数の場合)の誤差の問題です。
とりあえず、いろいろなHPなどの情報を見たりして、誤差問題解決を下記のようにしました。
「数値の頭(左側)から16桁目を四捨五入する」
小数の場合はほとんど誤差が生じるため、計算後、計算結果が小数ならば、必ず
上記の誤差処理を行っています。
しかしこれでは、以下の場合に不具合が出てしまいます。
・ 0.99 999 999 999 999 ÷ 10 = 本来の答えは「0.09 999 999 999 999 9」
⇒ しかし15桁までの表示なので、本来は「0.09 999 999 999 999」と15桁まで出力
させなくてはいけないのに、16桁目の「9」を四捨五入したせいで「0.1」という表示に
なってしまう。
16桁目を四捨五入しないと誤差をとることはできないし、でも上記の例だと正しい結果
が出力されません。
どうしたらいいのか頭を悩ませています。
何か良い解決法等あれば、ご教授お願いします!!