通知
すべてクリア
Topic starter
2003年6月25日 1:22 AM
doubleの値を指数表示しようとしています。
CString Str;
double dVal = 0.0002;
Str.Format( %.2e, dVal );
とすると、Strの中身が
2.00e-004となってしまいます。
「004」の部分を「4」としたいのですが、これを制御することが
できません。
あと、「2.00e」も「2.00E」としたいのですが、
Str.Format( %.2E, dVal );
では、だめでした。
どなたかご存知な方は、教えてください。
開発環境は、VC++6.0、MFC、Windows2000
2003年6月25日 8:09 AM
自分で関数を作ればいかようにもできます。
>「004」の部分を「4」としたいのですが、これを制御することが
>できません。
eまでをそのままコピーして、その後の文字列をatoi()で変換する。
>あと、「2.00e」も「2.00E」としたいのですが、
文字列を全て大文字変換すればよい
_strupr、_wcsupr、_mbsupr
2003年6月25日 1:33 PM
例えは、以下のように計算して求めるとか。
int iW = floor(log10(dVal));
Str.Format(%.2fE%d, dVal * pow(10, -iW), iW);
2003年6月25日 5:29 PM
CString::Formatって、完全にsprintf互換ではないんですね。
というわけで、CString::Formatではなくて、
ずばりsprintfを使えばいいんではないでしょうか。
あまり使いたくないという気もしますが。。。
2003年6月25日 7:24 PM
sprintfはだめでしょう。
標準で指数部は2桁以上って決まっていますから。