C语言中有关printf语句中%m.nf的问题

指定数据宽度和小数位数,用%m.nf

3种变形:

%mf

m 表示指定输出数据的域宽(所占的列数)。我们来看一个例子:

#include<stdio.h>
int main()
{
	char x = 'a';
	printf("%2c\n",x);
	printf("%3d\n",x);
	return 0;
}

在这里插入图片描述
从以上结果可知,m为---->输出数据在区域对齐。
而反之,m为---->输出数据在区域对齐。如下:

#include<stdio.h>
int main()
{
	char x = 'a';
	printf("%-2c\n",x);
	printf("%-3d\n",x);
	return 0;
}

在这里插入图片描述
m正负的规律也适用于下面两种变形。

%m.nf

m 指定数据宽度
n 指定小数位数,(如果把小数部分指定为0,则不仅不输出小数,而且小数点也不输出,所以不要轻易指定小数的位数为0)
例子如下:

#include<stdio.h>
int main()
{
float a;
a = 10000/3.0;
printf("%25.15f\n",a);
return 0;
}

在这里插入图片描述
当把a换成double型,例子如下:

#include<stdio.h>
int main()
{
double a;
a = 10000/3.0;
printf("%25.15f\n",a);
return 0;
}

在这里插入图片描述
得到的数据精度不同是因为:float型数据只能保证6~7个有效数字;double型数据只能保证15–16个有效数字

%.nf

总长度不限,小数点后面保留n位

  • 9
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值