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