精度规范

在格式规范,第三个选项字段是精度规范。 它包含,根据转换类型,指定字符串的字符数,则小数位数或有效数字个数是输出的非负十进制整数 (.) 及后跟的过程。

不同于宽度规范,精度规范可能导致输出值的截断或舍入浮点值。 如果 precision 指定,因为 0 和要转换的值为 0,如以下示例所示,则结果是未字符输出,例如:

printf( "%.0d", 0 ); /* No characters output */

如果精度规范是星号 (*),从中 int 参数参数列表提供值。 如此示例所示,在参数列表中,precision 参数必须在要设置格式的值,例如:

printf( "%.*f", 3, 3.14159265 ); /* 3.142 output */

该类型确定 precision 的解释或默认值的精度,当 precision 省略时,如下表所示。

精度值如何影响类型

类型

含义

默认

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 字符遇到。

请参见

参考

printf, _printf_l, wprintf, _wprintf_l

格式规范语法:printf 和 wprintf 函数

标志指令

printf宽度规范

大小规格

printf键入域字符