c语言: %2.3f是什么意思,2是占2个格子,3是保留小数点后3位,怎么我感觉好像有问题啊,格子

c语言: %2.3f是什么意思,2是占2个格子,3是保留小数点后3位,怎么我感觉好像有问题啊,格子不够啊

那要看%2.3f放在什么地方:

    放在scanf里,写成scanf("%2.3f",&x);是错误的,因为scanf在接收浮点数时是不能确定精度的。所以就谈不上它有什么意义。

    放在printf里,如printf("%2.3f",x);,这是将x按浮点数输出,占宽2字符右对齐,小数点后保留3位,第4位四舍五入的意思。

    若把它放在char a[]="%2.3f";这样的语句里,它就是一个初始化char型数组a的常字符串,没有别的意思。

追问

放在printf里2是表示占2字符,那还保留3位小数岂不是有冲突?

字符都不够怎能保留3位小数?

追答

你既然知道为什么还要这样写,不把2那里写大一点?不过C没有你那样呆板,当实际字符长度超过%后面规定的长度时,按实际长度输出,只有不足时才在前面补空格。看来你根本就没有看过这些控制字符串的意义,还是先看一下吧。scanf和printf是复杂库函数,关于控制字符串的名堂就很多很多……

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-28
%2.3f
对于整数部分,如果整数部分位数小于2位,则在前面补0;如果整数部分大于2位,则整数部分原样输出。
对于小数部分,如果小数部分位数小于3位,则在后面补0;如果小数部分大于3位,则进行四舍五入保留3位小数。
第2个回答  2015-10-28
2是保留两位整数 3是保留三位小数追问

老师说2是占2个格子

追答

。。

相似回答