精度规范
在格式规范,第三个选项字段是精度规范。 它包含,根据转换类型,指定字符串的字符数,则小数位数或有效数字个数是输出的非负十进制整数 (.) 及后跟的过程。
不同于宽度规范,精度规范可能导致输出值的截断或舍入浮点值。 如果 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 字符遇到。 |