指数表示 – プログラミング – Home

通知
すべてクリア

指数表示


roccy
 roccy
(@roccy)
ゲスト
結合: 23年前
投稿: 82
Topic starter  

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


引用解決済
トピックタグ
アイススケーター
 アイススケーター
(@アイススケーター)
ゲスト
結合: 23年前
投稿: 280
 

自分で関数を作ればいかようにもできます。

>「004」の部分を「4」としたいのですが、これを制御することが
>できません。

eまでをそのままコピーして、その後の文字列をatoi()で変換する。

>あと、「2.00e」も「2.00E」としたいのですが、

文字列を全て大文字変換すればよい

  _strupr、_wcsupr、_mbsupr


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

例えは、以下のように計算して求めるとか。

int iW = floor(log10(dVal));
Str.Format(%.2fE%d, dVal * pow(10, -iW), iW);


返信引用
とおりすがり
 とおりすがり
(@とおりすがり)
ゲスト
結合: 23年前
投稿: 180
 

CString::Formatって、完全にsprintf互換ではないんですね。
というわけで、CString::Formatではなくて、
ずばりsprintfを使えばいいんではないでしょうか。
あまり使いたくないという気もしますが。。。


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

sprintfはだめでしょう。
標準で指数部は2桁以上って決まっていますから。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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