C语言中,使用 printf 函数格式化输出浮点数时,可以通过指定精度来控制输出的小数位数。通过使用 printf 函数的格式化字符串,可以灵活地控制浮点数的输出格式,包括小数位数、宽度、以及科学计数法等。在实际编程中,根据需要选择合适的格式化方式,以达到最佳的输出效果。

1、浮动点数格式化

C 语言中,当使用 printf 函数格式化浮动点数时,可以指定 字段宽度(输出的总字符数)和 精度(小数点后的数字位数)。语法如下:

%[宽度].[精度]f

宽度是指定输出数值的最小总宽度,包括小数点、整数部分和小数部分。精度是指定小数点后的数字位数。

2、打印固定精度

如想保持浮动点数的特定位数,可以直接指定精度。精度指的是小数点后显示的数字位数。

#include <stdio.h>

int main() {
    double num = 123.456789;

    // 指定小数点后3位精度
    printf("%.3f\n", num);  // 输出: 123.457

    return 0;
}

3、指定最小字段宽度和精度

可以同时指定输出的宽度和精度。宽度确保输出右对齐,并且占据指定的空间,精度确保输出具有特定的小数位数。

#include <stdio.h>

int main() {
    double num = 123.456789;

    // 指定字段宽度为10个字符,小数点后4位精度
    printf("%10.4f\n", num);  // 输出: "  123.4568"

    return 0;
}

4、保持整数部分的前导零

如希望对于较小的数字保持前导零(即保证总宽度不变,即使整数部分很短),可以在宽度修饰符中使用 0

#include <stdio.h>

int main() {
    double num = 123.456789;

    // 指定字段宽度为10个字符,并保持前导零
    printf("%010.4f\n", num);  // 输出: "0000123.4568"

    return 0;
}

5、处理较大的数字的精度和宽度

对于非常大的浮动点数,精度和宽度也可以相应调整。如果数字超出了指定的宽度,printf 会自动扩展输出以适应数字。

#include <stdio.h>

int main() {
    double num = 1234567.123456;

    // 指定字段宽度为10个字符,小数点后4位精度
    printf("%10.4f\n", num);  // 输出: "1234567.1235"

    return 0;
}

6、常用示例

printf 用于格式化输出浮动点数时,可以使用格式化字符串来控制输出的精度和宽度。

#include <stdio.h>

int main() {
    float num = 3.141592653589793;
    
    // 输出浮动点数,保留两位小数
    printf("num = %.2f\n", num);
    
    // 输出浮动点数,保留四位小数
    printf("num = %.4f\n", num);
    
    // 输出浮动点数,保留两位小数,宽度为8
    printf("num = %8.2f\n", num);
    
    // 输出浮动点数,使用科学计数法表示,保留两位小数
    printf("num = %.2e\n", num);
    
    // 输出浮动点数,强制显示符号
    printf("num = %+6.2f\n", num);

    return 0;
}

推荐文档