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を引いてみるとか、そういうのは桁によって浮動小数点の難しい問題にぶち当たります。

コメントを残す