易百教程

格式化浮点数值

可以使用多个基本%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

从此输出中,可以看到宽度值如何“填充”左侧的数字。随着宽度值减小,填充也减小。
当指定的宽度宽于原始值时,显示将没有意义,如最后两行输出所示。