精度规范
在格式规范,第三可选字段是精度规范。 它包含,根据转换类型,指定字符串的字符的数量,小数位数或将这些类型输出的有效位数的非负十进制整数 (.) 及后跟的过程。
与宽度指定精度规范,可以生成输出值的浮点值的截断或轮。 如果指定了 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 字符。 |