CStringのFormat()が浮動小数点の桁指定で四捨五入する問題

こんにちは。こんばんは。おはようございます。
Q-39です。お世話になっております。

最近Visual studioでC++を始めました。

MSのCStringのFormat()は浮動小数点の小数の桁指定をすると
四捨五入になります。
ネットで調べてみたら、浮動小数点の難しい問題と混同している
サイトが見受けられました。

この手の問題は、数字で考えずに、文字で考えれば楽勝です。

小数点以下第4位まである場合に
小数点以下第3位を切り捨てるなら、

double a;
CString s;
だとして、

s.Format(“%.4f”, a)
s = s.Left(s.GetLength() – 2);

で終わり。

0.005を引いてみるとか、そういうのは桁によって浮動小数点の難しい問題にぶち当たります。

CStringのFormat()が浮動小数点の桁指定で四捨五入する問題” へのコメントが 2 点あります

  1. ん?
    a=0.99998fのとき、
    Formatが四捨五入するならFormat後は”1.0000″で、
    下2文字を切り落としても、”1.00″にしかならないのですが・・・

    • コメントありがとうございます。

      記事に書いていますが前提条件があり、
      「小数点以下第4位まである場合に」です。
      四捨五入させずにフル桁表示し、それで
      切り落とします。

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>