6

sprintf次のようなものを使用して、文字列に double 値を設定しようとしています。

sprintf(S, "%f", val);

しかし、精度は小数点以下 6 桁に切り捨てられています。精度には小数点以下約 10 桁が必要です。

それはどのように達成できますか?

4

5 に答える 5

9

%[幅]。[精度]

幅には小数点を含める必要があります。

%8.2は8文字幅を意味します。ポイントの前に5桁、ポイントの後に2桁。ポイント用に1文字予約されています。

5 + 1 + 2 = 8

于 2008-09-16T06:17:41.860 に答える
7

必要なのは修飾子です。

sprintf(S, "%.10f", val);

man sprintfには、フォーマット指定子に関するより多くの詳細があります。

于 2008-09-16T06:15:50.010 に答える
1

より完全なリファレンスについては、ウィキペディアのprintfの記事、「printf形式のプレースホルダー」のセクション、および同じページの良い例を参照してください

于 2008-09-16T06:19:58.890 に答える
1

注意してください-sprintfの出力はCロケールによって異なります。これはあなたが望むものかもしれないし、そうでないかもしれません。ロケールのドキュメント/マニュアルページでLC_NUMERICを参照してください。

于 2008-09-16T06:20:34.460 に答える
1

%ffloat 値用です。

%lf代わりに使用してみてください。これは、ダブル (以前はロング フロートと呼ばれていた) 用に設計されています。

ダブル x = 3.14159265 ;
printf("15.10lf\n", x);

于 2008-09-16T19:05:11.983 に答える