C言語関係掲示板

過去ログ

No.184.変換指定子の作成


No.1178

変換指定子(double型)
投稿者---akira(2002/03/06 14:02:57)


こんにちは。

char型の文字列をdouble型を用いて計算し、結果(double)をファイル
に書き込む。との処理を行いたく、以下の様な感じで処理してます。
char numbuf[]="0.18e-6";
char numbuf2[]="0.25e-6";
num=atof(&numbuf[0]);
num2=atof(&numbuf2[0]);
ans=num2-num;
fprintf(writefp,"%e",ans);

出力をみると、
7.000000e-08
となっています。計算はあっているのですが、これを
0.700000e-07
とする方法はないでしょうか? 変換指定子で制御出来るのかと思い
色々調べてみたのですが、桁数を制御出来るものしか見当たりません。
どなたかご存知の方がいれば、教えて下さい。


No.1182

Re:変換指定子(double型)
投稿者---かずま(2002/03/06 14:30:31)


そんな変換指定子はありませんから、関数を作りましょう。
#include <stdio.h>

/* ftoa -- d の値を、小数点以下 w桁で、文字配列 s に入れる */
void ftoa(char *s, int w, double d)
{
    sprintf(s+1, "%.*e", w, d*10);
    if (s[1] == '-')
        s[3] = s[2], s[2] = '.', s[1] = '0', s[0] = '-';
    else
        s[2] = s[1], s[1] = '.', s[0] = '0';
}

int main()
{
    char s[64];

    ftoa(s, 5, 0.7e-6);
    puts(s);
    ftoa(s, 5, -0.8e-6);
    puts(s);
    return 0;
}



No.1205

Re:変換指定子(double型)
投稿者---akira(2002/03/07 10:26:10)


かずまさん
ありがとうございます!
(お礼遅れて申し訳ありません。)
やはりないのですか…。でも、これで何とか実現出来そうです。
非常に助かりました。ありがとうございました。


戻る


「初心者のためのポイント学習C言語」 Last modified:2002.05.14
Copyright(c) 2000-2002 TOMOJI All Rights Reserved