こんにちは。こんばんは。おはようございます。
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を引いてみるとか、そういうのは桁によって浮動小数点の難しい問題にぶち当たります。
ん?
a=0.99998fのとき、
Formatが四捨五入するならFormat後は”1.0000″で、
下2文字を切り落としても、”1.00″にしかならないのですが・・・
コメントありがとうございます。
記事に書いていますが前提条件があり、
「小数点以下第4位まである場合に」です。
四捨五入させずにフル桁表示し、それで
切り落とします。
いや普通に少数桁数×10してroundしたほうが正確だと思う
This paragraph is genuinely a nice one it assists new
internet people, who are wishing in favor of blogging.