C言語関係掲示板

過去ログ

No755 小数点の前ゼロ

[戻る] [ホームページ]
No.9393

小数点の前ゼロ
投稿者---てるてる坊主(2003/09/22 16:21:22)


sprintfで"%f"では前ゼロは出来ないのでしょうか?
以下のような構文だとうまくいかないのですがなぜでしょう?
sprintf( &chrBuf[lp_cnt][len], "%03.1f", set_dbl );

No.9394

Re:小数点の前ゼロ
投稿者---YuO(2003/09/22 17:44:22)


>sprintfで"%f"では前ゼロは出来ないのでしょうか?
>以下のような構文だとうまくいかないのですがなぜでしょう?
>sprintf( &chrBuf[lp_cnt][len], "%03.1f", set_dbl );

「うまくいかない」をちゃんと説明して下さい。つまり,
・set_dblの値 (入力)
・期待された出力
・実際の出力
を提示して下さい。


ちなみに,
・printf("%03.1f", f);
・printf("%3.1f", f);
・printf("%0.1f", f);
・printf("%.1f", f);
は同じ結果になります。
#fはdouble型の変数またはdouble型に展開されるオブジェクト形式マクロ。

%03.1fは,
[flags] 0 : 0で最低フィールド幅に満たない分を埋める
[minimum field width] 3 : 最低フィールド幅は3文字
[precision] .1 : 小数点以降に1文字表示
[length modifier] : なし
[conversion specifier] f : double型を[-]d.dという形式で表示
という意味になります。
小数点より前に最低1文字,小数点文字,小数点より後ろに1文字表示しますから,
最低でも3文字表示することになります。
つまり,今回はflagsとminimum field widthは実質的に意味を為しません。


No.9395

Re:小数点の前ゼロ
投稿者---ともじ(2003/09/22 17:48:43)


こんにちは。

>sprintfで"%f"では前ゼロは出来ないのでしょうか?

できますよ。
    sprintf(buf, "%05.2f\n", 3.14);
フィールド幅には小数点も含みますので、ご注意ください。

No.9397

Re:小数点の前ゼロ
投稿者---てるてる坊主(2003/09/22 18:08:27)


出来るようになりました。
YuOさん、ともじさんアドバイスを有難う御座いました。