关于printf("%*.*f")的问题

先看一道题:四舍五入

要求:输入:数字双精度num和n.   num是被四舍五入的数,n是保留的小数位数(n>=0)

            输出:保留的结果

程序如下:

#include<stdio.h>
int main()
{
	double num;
	unsigned int n;
	printf("Please input num and n:");
	scanf("%lf,%d",&num,&n);
	printf("output:\n");
	printf("%.*f\n",n,num);
	return 0;
 }
结果为:

                

这里用到了%*.*f的表达,其中*.*是printf函数的格式附加字符。*表示不确定的变量,可以用变量的值代替。

这里是制定宽度的数值的输出,如果制定宽度值为*号,参数列表中需要用一个整型参数值提供。

MSDN2008
If the width specification is an asterisk (*), an int argument from the argument list supplies the value

关于print函数中用到的格式附加字符说明:

字符:l                                           一般用于长整型整数,可加在格式符d、o、x、u前面

             m(代表一个正整数)       数据最小宽度

             n(代表一个正整数)        对实数,表示输出n位小数;对字符串,表示截取的字符个数

             -  (负号)                             输出的数字或字符在域内向左靠

注意:

m(m=1,2,3...) 宽度至少为m位,不够以空格填充   
0m(m=1,2,3...) 宽度至少为m位,不够左边以0填充   

PS:

      如果要输出字符“%”,应该在“格式控制字符串”中用两个“%”表示:

      如printf("98%%\n");   //输出98%.









评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值