精確規格
格式規格,第三個欄位是精確度規格。 它包括,根據轉換型別,指定字串中的字元數,小數位數的數目或將輸出的有效位數的非負數十進位整數之後的句號 (.)。
不同於寬度規格,精確度規格可能產生輸出值截斷或捨入浮點值。 如果指定 precision ,因為 0 和要轉換的值是 0,如下列範例所示,結果是未字元輸出,:
printf( "%.0d", 0 ); /* No characters output */
如果精確度規格為星號 (*),從引數清單的 int 引數提供的值。 如範例所示,在引數清單, precision 引數必須在正在格式化的值之前,:
printf( "%.*f", 3, 3.14159265 ); /* 3.142 output */
這個型別會決定 precision 的說明或預設的精確度,而省略 precision 時,如下表所示,。
整數位數值如何影響型別
型別 |
意義 |
Default |
---|---|---|
a, A |
這個精確度的時間點之後指定的位數。 |
預設精確度為 6。 如果精確度為 0,小數點沒有列印,除非使用 # 旗標。 |
c, C |
這個精確度沒有作用。 |
字元列印。 |
d, i, u, o, x, X |
這個精確度指定要列印的最少位數。 如果數字數目引數的小於 precision,輸出值在左邊填補零。 表示數字的數目超過 precision時,則這些值不會被截斷。 |
預設精確度為 1。 |
e, E |
這個精確度指定在小數點後要列印的位數。 上次列印的數字捨入。 |
預設精確度為 6。 如果 precision 為 0 或句號 (.) 會出現,而不用後面的數字,小數點不會列印。 |
f |
整數位數值在小數點後指定的位數。 如果小數點出現,至少一個數字在它之前發生。 值會四捨五入成數字的適當數目。 |
預設精確度為 6。 如果 precision 為 0,或者,如果句號 (.) 會出現,而不用後面的數字,小數點不會列印。 |
g, G |
這個精確度指定列印的有效位數上限。 |
六個有效位數列印,因此,所有後端的零截斷。 |
s, S |
這個精確度指定要列印的最大字元數。 超過 precision 的字元不會列印。 |
字元列印,直到遇到 Null 字元。 |