printf の精度指定子
printf、wprintf への移動
printf の精度指定子では、出力する最大文字数(または最小整数桁数)を設定します。
printf の精度指定は、先行するあらゆる幅指定子と区別するために常にピリオド(.)で始まります。
その次に、幅指定子と同様に、精度が以下のいずれかの方法で指定されます。
- 10 進数字の文字列を使った直接指定
- アスタリスク(*)を使った間接指定
精度指定子にアスタリスク(*)を使用した場合は、関数呼び出しの次の引数(int と見なされる)が精度を指定します。
幅や精度にアスタリスクを使用する場合は、幅引数が指定子の直後に現れる(その後に精度引数、変換するデータの引数が順に続く)必要があります。
[.prec] | 出力精度への影響 |
---|---|
(指定なし) |
精度が次のとおり、デフォルトに設定されます。 = 1(d、i、o、u、x、X の各型の場合) = 6(e、E、f の各型の場合) = すべての有効桁(g、G の各型の場合) = 最初の NULL 文字まで出力(s 型の場合) = 影響なし(c 型の場合) |
.0 |
d、i、o、u、x の各型の場合は、精度がデフォルトに設定されます。 e、E、f の各型の場合は、小数点が出力されません。 |
.n |
n 文字または小数点以下 n 桁が出力されます。 出力値の文字数が n より多い場合、出力が切り詰められるか丸められる場合があります (そうなるかどうかは型文字で決まります)。 |
. |
引数リストに精度指定子が指定されます。これは、書式設定の対象となる実際の引数より先に現れる必要があります。 |
次の条件をすべて満たす場合は、フィールドの数字が出力されません(つまり、フィールドが空になります)。
- 精度を 0 と明示的に指定する。
- フィールドの書式指定子が整数書式(d、i、o、u、x)のいずれかである。
- 出力する値が 0 である。
変換に対する [.prec] の影響
型文字 | 変換に対する [.prec](.n)の影響 |
---|---|
d i • u x X |
少なくとも n 桁を出力することを指定します。 入力引数が n 桁より少ない場合、出力値の左側がゼロで埋められます。 入力引数が n 桁より多い場合でも、出力値は切り詰められません。 |
e E f |
小数点以下 n 桁を出力することを指定します(出力される最後の桁は丸められます)。 |
g G |
最大で有効数字 n 桁を出力することを指定します。 |
c s |
出力に対する影響はありません。 最大 n 文字を出力することを指定します。 |