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;
}