double:小数点4桁目以下を切り捨て – プログラミング – Home

double:小数点4桁目以下を切り捨...
 
通知
すべてクリア

[解決済] double:小数点4桁目以下を切り捨て


@さる
 @さる
(@@さる)
ゲスト
結合: 18年前
投稿: 2
Topic starter  

開発環境: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になって欲しい所なんですが、
どうすればいいのか、だいぶ煮詰まっております。。。

ご存知の方がいらっしゃいましたらご教授お願い致します。


引用未解決
トピックタグ
翼
 翼
(@翼)
ゲスト
結合: 19年前
投稿: 11
 

こんちわ

計算結果をCStringにいったん入れてそのときに小数点以下の桁数カット
で、doubleに戻せばいいのでは?

double d,d2;

d = 3;

d2 = d + ( -2.9698484809834995);

CString sWork;

sWork.Format(%1.4f,d2);

d = atof(sWork);

こんなかんじです


返信引用
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 22年前
投稿: 830
 

うーんそれでも「原理的に無理」なのでは。
文字列表現を二進化するときに原理的に精度落ちしますから。
@さるさんの問題が表示だけの話なら Format まででやめておけばOK
再度 atof する以上誤差は避けられないでしょう


返信引用
翼
 翼
(@翼)
ゲスト
結合: 19年前
投稿: 11
 

たしかに・・そうでした。。

doubleに戻して使用するには誤差がでますねぇ・・

うっかりしてました

tetrapodさん ご指摘ありがとうございました


返信引用
@さる
 @さる
(@@さる)
ゲスト
結合: 18年前
投稿: 2
Topic starter  

>翼さん

早速の回答ありがとうございます。

確かにできました!

ちなみに、
0.030200000000000001
という値を得る事ができました。

最終的にはこれをファイルに吐き出したたいので、
その際に sWork.Format(%1.4f,d2); という処理を
使用させて頂きたいと思います。

ありがとうございました!


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました