在C语言中,打印 double 类型变量通常使用 printf 函数,并指定 %f、%e、%g 等格式说明符,以下是详细说明和示例代码:

(图片来源网络,侵删)
基本打印(%f)
%f 用于以十进制形式打印 double,默认保留6位小数。
#include <stdio.h>
int main() {
double num = 3.141592653589793;
printf("Default: %f\n", num); // 输出: 3.141593(四舍五入到6位小数)
return 0;
}
控制小数位数
通过 %.nf 指定保留 n 位小数:
#include <stdio.h>
int main() {
double num = 3.141592653589793;
printf("2位小数: %.2f\n", num); // 输出: 3.14
printf("4位小数: %.4f\n", num); // 输出: 3.1416
return 0;
}
科学计数法(%e 或 %E)
适用于极大或极小的数值:
#include <stdio.h>
int main() {
double num = 123456789.0;
printf("科学计数法: %e\n", num); // 输出: 1.234568e+08
printf("大写E: %E\n", num); // 输出: 1.234568E+08
return 0;
}
自动选择最佳格式(%g)
%g 会根据数值大小自动选择 %f 或 %e,并去除多余的零:
#include <stdio.h>
int main() {
double num1 = 123.456;
double num2 = 0.0000123456;
printf("%g\n", num1); // 输出: 123.456(用%f)
printf("%g\n", num2); // 输出: 1.23456e-05(用%e)
return 0;
}
指定字段宽度和对齐
通过 %m.nf 控制输出宽度(m)和小数位数(n),左对齐用 :
#include <stdio.h>
int main() {
double num = 3.14159;
printf("右对齐: %10.2f\n", num); // 输出: " 3.14"(总宽度10位)
printf("左对齐: %-10.2f\n", num); // 输出: "3.14 "
return 0;
}
长双精度(long double)
打印 long double 需用 %Lf(注意大写 L):
#include <stdio.h>
int main() {
long double ld = 3.14159265358979323846L;
printf("long double: %.15Lf\n", ld); // 输出更多位小数
return 0;
}
注意事项
- 精度问题:
double的打印精度受限于其存储能力(约15-17位有效数字)。 %f默认行为:即使不指定小数位数,%f也会输出6位小数(如141593)。- 头文件:确保包含
stdio.h。
完整示例
#include <stdio.h>
int main() {
double num = 123.456789;
printf("默认: %f\n", num); // 123.456789
printf("2位小数: %.2f\n", num); // 123.46
printf("科学计数法: %e\n", num); // 1.234568e+02
printf("自动选择: %g\n", num); // 123.457
printf("宽度控制: %10.2f\n", num); // " 123.46"
long double ld = 3.141592653589793L;
printf("long double: %.15Lf\n", ld); // 3.141592653589793
return 0;
}
通过灵活使用这些格式说明符,可以满足不同的打印需求。
