sprintf と一般的な構文"%A.B"
を使用すると、次のことができます。
double a = 0.0000005l;
char myNumber[50];
sprintf(myNumber,"%.2lf",a);
フォーマット文字列で A と B を動的に設定できますか?
sprintf と一般的な構文"%A.B"
を使用すると、次のことができます。
double a = 0.0000005l;
char myNumber[50];
sprintf(myNumber,"%.2lf",a);
フォーマット文字列で A と B を動的に設定できますか?
はい、できます。*
フィールド幅と.*
精度としてアスタリスクを使用する必要があります。次に、値を運ぶ引数を指定する必要があります。何かのようなもの
sprintf(myNumber,"%*.*lf",A,B,a);
注: A
andB
は type である必要がありますint
。標準からC11
、章§7.21.6.1、fprintf()
機能
... フィールド幅、精度、またはその両方をアスタリスクで示すことができます。この場合、
int
引数はフィールド幅または精度を提供します。フィールド幅、精度、またはその両方を指定する引数は、変換される引数 (存在する場合) の前に (その順序で) 表示されます。負のフィールド幅の引数は、-
フラグとして扱われ、その後に正のフィールド幅が続きます。負の精度引数は、精度が省略されたかのように取られます。