C语言学习——%m.nf的问题

关于c语言里%m.nf的问题

首先实验了一下

#include <stdio.h>
int main()
{
	float x=5.4526;
	printf("%.2f\n\n",x);

	printf("%2f\n",x);
	printf("%9f\n\n",x);
	
	printf("%2.1f\n",x);
	printf("%5.1f\n",x);
	printf("%10.1f\n",x);
	printf("%10.2f\n\n",x);

	
	printf("%05.1f\n",x);
	return 0;
}

结果分别是

5.45

5.452600
 5.452600

5.5
  5.5
       5.5
      5.45

005.5

不难发现

float x=5.4526;
printf("%.2f\n",x);

".nf "就是保留小数点几位;

“%mf”的情况有两种,注意浮点型变量默认小数点后6位,小数点也占一个位

1.m(表示我们设置的宽度)<=实际数值的宽度,这里我写的2f,结果直接输出实际数值,得到第二个结果;

float x=5.4526;
printf("%2f\n",x);

2.m>实际数值的宽度,我们发现结果自动在其左侧添加了一个空格,得到第三个结果;

float x=5.4526;
printf("%9f\n",x);

对于“m.nf”的情况

float x=5.4526;
printf("%5.1f\n",x);

输入上述代码,运行后发现,结果是“ 空空5.5” 总共5个宽度:在保留一位小数的情况下已经有小数后一位+标点+个位数 总共3个位置,剩下的只能由空格放在其左侧补足。其实这里就是将“%mf”和“%.nf”的情况结合起来。

接着我们再试几个,再次印证。

printf("%2.1f\n",x);
printf("%10.1f\n",x);
printf("%10.2f\n\n",x);
5.5
       5.5
      5.45

我们的思路是:先看保留几位小数,再+小数点,再+整数部分位数=sum

两个结果:

1.sum< m,此时需要在其左侧补足m-sum个空格,再顺位输出。

2.sum>=m,此时并不需要补足空格,直接按照实际数值保留位数输出。

那只有补足只能是空格嘛?

printf("%05.1f\n",x);

输出:005.5

我们稍微转变一下,在"5.1f"前添加一个0,结果就变成了“005.5”,在数字左侧添加2个0,而不是空格。

如有错误,请指正!谢谢!

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值