可以使用多个基本%f
转换字符来格式化浮点值。通常在printf()
函数的格式化文本中使用的格式:
%w.pf
w
设置整个数字的最大宽度,包括小数位。p
设定精度。例如:
printf("%9.2f",12.45);
该语句输出四个空格,然后输出12.45
。这四个空格加12.45
(总共五个字符)等于宽度为9
。在小数点右侧只显示两个值,因为.2
是用于%f
的转换字符。
可以在不设置宽度的情况下指定精度值,但必须以小数点为前缀,如%.2f
。
示例代码
#include <stdio.h>
int main()
{
float sample1 = 34.5;
float sample2 = 12.3456789;
printf("%%9.1f = %9.1f
", sample1);
printf("%%8.1f = %8.1f
", sample1);
printf("%%7.1f = %7.1f
", sample1);
printf("%%6.1f = %6.1f
", sample1);
printf("%%5.1f = %5.1f
", sample1);
printf("%%4.1f = %4.1f
", sample1);
printf("%%3.1f = %3.1f
", sample1);
printf("%%2.1f = %2.1f
", sample1);
printf("%%1.1f = %1.1f
", sample1);
printf("%%9.1f = %9.1f
", sample2);
printf("%%9.2f = %9.2f
", sample2);
printf("%%9.3f = %9.3f
", sample2);
printf("%%9.4f = %9.4f
", sample2);
printf("%%9.5f = %9.5f
", sample2);
printf("%%9.6f = %9.6f
", sample2);
printf("%%9.7f = %9.7f
", sample2);
printf("%%9.6f = %9.6f
", sample2);
printf("%%9.7f = %9.7f
", sample2);
printf("%%9.8f = %9.8f
", sample2);
system("pause");
return(0);
}
执行上面示例代码,得到以下结果:
%9.1f = 34.5
%8.1f = 34.5
%7.1f = 34.5
%6.1f = 34.5
%5.1f = 34.5
%4.1f = 34.5
%3.1f = 34.5
%2.1f = 34.5
%1.1f = 34.5
%9.1f = 12.3
%9.2f = 12.35
%9.3f = 12.346
%9.4f = 12.3457
%9.5f = 12.34568
%9.6f = 12.345679
%9.7f = 12.3456793
%9.6f = 12.345679
%9.7f = 12.3456793
%9.8f = 12.34567928
从此输出中,可以看到宽度值如何“填充”左侧的数字。随着宽度值减小,填充也减小。
当指定的宽度宽于原始值时,显示将没有意义,如最后两行输出所示。