printf("%.3f",x);とすれば小数点いかの桁数を指定できるのは知っています。
そこで、「3」の部分を「n」などの変数に変えて、精度を変えれるようにしたいのですが、可能でしょうか?
また、可能ならばどのようにすればいいのでしょうか。
これではうまくいきませんが、やりたい事のイメージです。
printf("%.nf",x);
分かる方、お願いします。
フィールド幅に、アスタリスクを使います。
man printf の「フィールド幅」のところを参照。
最小のフィールド幅を指定する 10進数の数値文字列 (文字列の最初の文字は ゼロ以外)。本項目はオプションである。 変換された値の文字数がフィールド長よりも少ない場合、 フィールドの左側をスペースで埋める (左揃えのフラグがある場合は右側を埋める)。 10進数の文字列の代わりに "*" や "*m$" (m は 10進整数) を書くこともできる。 "*" と "*m$" はそれぞれ、次の引き数と m 番目の引き数をフィールド幅として 使うことを指定する (これらの引き数は int 型でなければならない)。
http://linuxjm.sourceforge.jp/html/LDP_man-pages/man3/printf.3.html
ソースがあった方が分かりやすいでしょうか。
#include <stdio.h> int main(int argc, char* argv[]) { double a = 3.0 / 7.0; printf("%.3f\n", a); // 普通に... for (int i = 0 ; i < 8 ; ++i) { printf("%.*f\n", i, a); // 桁数を引数で指定する } return 0; }
ideone.com で試してみた結果が、これです。
http://ideone.com/nLo0by
迅速な回答ありがとうございました。
2013/06/02 22:09:34ソースもありとても助かりました。