開発環境:WinXP(SP2) VC++.NET MFC
小数点の切捨てを行いたく、過去ログ( http://rararahp.cool.ne.jp/cgi-
bin/lng/vc/vclng.cgi?print+200402/04020042.txt)を参考に行ったのですが、
うまく行きません・・・。
woodさんの方法を使用しました。
-2.9698484809834995 + nという値を丸めたいと思っています。
nというのは任意のdouble型の値です。
例.n = 3の時
0.030099999999999998というようになってしまいます。
0.0301もしくは0.03になって欲しい所なんですが、
どうすればいいのか、だいぶ煮詰まっております。。。
ご存知の方がいらっしゃいましたらご教授お願い致します。
こんちわ
計算結果をCStringにいったん入れてそのときに小数点以下の桁数カット
で、doubleに戻せばいいのでは?
double d,d2;
d = 3;
d2 = d + ( -2.9698484809834995);
CString sWork;
sWork.Format(%1.4f,d2);
d = atof(sWork);
こんなかんじです
うーんそれでも「原理的に無理」なのでは。
文字列表現を二進化するときに原理的に精度落ちしますから。
@さるさんの問題が表示だけの話なら Format まででやめておけばOK
再度 atof する以上誤差は避けられないでしょう
たしかに・・そうでした。。
doubleに戻して使用するには誤差がでますねぇ・・
うっかりしてました
tetrapodさん ご指摘ありがとうございました
>翼さん
早速の回答ありがとうございます。
確かにできました!
ちなみに、
0.030200000000000001
という値を得る事ができました。
最終的にはこれをファイルに吐き出したたいので、
その際に sWork.Format(%1.4f,d2); という処理を
使用させて頂きたいと思います。
ありがとうございました!