C语言——printf语句中 %m.nf和 %-m.nf
%m.nf
m 指定数据宽度
n 指定小数位数
- 注意:在指定小数位数时,如果把小数部分指定为0,则不仅不输出小数,而且小数点也不输出,所以不要轻易指定小数的位数为0
简单例子介绍一下
#include<stdio.h>
int main()
{
float data1 = 1.1;
float data2 = 2.2;
float data3 = 3.3;
printf("data1 %1.5f\n",data1);//这里的%1.5f就是%m.nf
printf("data2 %2.2f\n",data2);
printf("data3 %10.2f\n",data3);
return 0;
}
运行结果:
- 指定数据宽度(m): 可见data3的宽度(m)为10,所以在小数点前面会补空格来凑够宽度10,data1和data2本身的宽度已经超出输入宽度,是可以忽略输出宽度的,直接按本身宽度输出,
- 指定小数位数(n): 小数位是依然按照输出小数位来输出的,不够的话,会再后面会补0来凑够小数位,可见data1,如果输出小数位小于本身小数位的,按照四舍五入的原则进行取值,
%-m.nf
- 为 m 时---->输出数据在区域右对齐
- 为 -m 时---->输出数据在区域左对齐
简单例子介绍一下
#include<stdio.h>
int main()
{
float data = 1.0;
printf("data %25.2f\n",data);//这里的%25.2f就是%m.nf
printf("data %-25.2f\n",data);//这里的%-25.2f就是%-m.nf
return 0;
}
运行结果
- 可见为 m时:输出data时结果向右靠拢,左边会补空格,凑够宽度
- 可见为 -m时:输出data时结果向左靠拢,右边会补空格,凑够宽度