私はこのようなsprintf
使用してdouble値を持つ文字列を移入しようとしています:どのように右の精度で文字列にdouble値を移入するために「%Fを」使用する
sprintf(S, "%f", val);
しかし、精度があります小数点第6位まで切り捨てられます。私は精度のために小数点以下10桁が必要です。
どのように達成できますか?何をしたい
私はこのようなsprintf
使用してdouble値を持つ文字列を移入しようとしています:どのように右の精度で文字列にdouble値を移入するために「%Fを」使用する
sprintf(S, "%f", val);
しかし、精度があります小数点第6位まで切り捨てられます。私は精度のために小数点以下10桁が必要です。
どのように達成できますか?何をしたい
% [幅] [精度]
幅は小数点を含むべきです。
8.2は8文字の幅を意味します。ポイントの前に5桁、後に2桁。 1文字はポイント用に予約されています。 = 8
は修飾子です:
sprintf(S, "%.10f", val);
男のsprintfは、フォーマット指定子の詳細多くの詳細を持っています。
5 + 1 + 2より完全な参照については、Wikipedia printf article, section "printf format placeholders"とa good example on the same pageを参照。
注意 - sprintfの出力はCロケールによって異なります。これはあなたが望むものかもしれません。ロケールのdocs/manページのLC_NUMERICを参照してください。
%f
は浮動小数点値です。
代わりに%lf
を試してみてください。ダブルス(長いフロートと呼ばれていました)のために設計されています。
倍x = 3.14159265;
printf( "15.10lf \ n"、x);
ちょうどメモ:彼がダブルを使用している場合は、 "lf"をより正確に使用しますか? –
いいえ、%fは倍精度に適しています。 – ChrisN
浮動小数点数は約6桁の精度しか持ちません。ダブルに%lfを使用してください。 – EvilTeach