回复 3楼 心雨123aa
不好意思
这论坛功能不行
有人回我帖子我都不知道
是这样的这类的问题%M.Nf你先看N
确定后面有几位小数后
你才能确定一共有多少位输出 位数设为 X(加上小数点后的位数)
此时你再将X与M比较
如果X大于M,则输出本来的数位数为X
如果X小于M,你可以想想,你要一个数输出的宽度为5(比如为5位数),但你实际上你宽度为3
为一个三位数
要填满5,你能怎么办呢,只有在前面空位
所以,此时应该在输出数的前面补空位M-X个
既然说了这么多了
我可以再说一点
我们经常可以看见%-M.Nf
这是什么意思呢
它的负号就代表从右边开始缩进,从右边开始补空位,即从后面开始缩进
我们平时见的%M.Nf 都省略了正好+,从左边开始缩进,即前面开始缩进
另外,你说当不要.5后,即改成printf("|%8f|\n",3461.45);
此时,你没有规定输出小数点后面的位数
所以它就直接输出
但为什么还会出现0 呢
这是因为%f 默认输出的 是6位
这就是为什么小数点后还要补0知道满足6位
心语,这样能理解吗