| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 597 人关注过本帖
标题:这里的6 7 8不是代表总的长度吗?结果为什么一样?
只看楼主 加入收藏
心雨123aa
Rank: 2
来 自:湛江
等 级:论坛游民
帖 子:55
专家分:38
注 册:2010-3-28
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:5 
这里的6 7 8不是代表总的长度吗?结果为什么一样?
#include "stdio.h"
void main()
{
    printf("|%8.5f|\n",3461.45);
    printf("|%7.5f|\n",3461.45);
    printf("|%6.5f|\n",3461.45);
}
搜索更多相关主题的帖子: 长度 结果 代表 
2010-04-01 11:01
亚小南
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:69
专家分:136
注 册:2009-11-19
收藏
得分:10 

 当你要输出的数3461.45位数是6
但你的.5说明后面有5位小数
加起来的话想想一共有多少位数
已经大于8了
所以按实际的位数输出
个人这样认为
不知道楼主怎么样想的
2010-04-01 11:26
心雨123aa
Rank: 2
来 自:湛江
等 级:论坛游民
帖 子:55
专家分:38
注 册:2010-3-28
收藏
得分:0 
回复 2楼 亚小南
如果没有小数的要求,但结果会多一个零啊!
2010-04-01 11:38
心雨123aa
Rank: 2
来 自:湛江
等 级:论坛游民
帖 子:55
专家分:38
注 册:2010-3-28
收藏
得分:0 
回复 2楼 亚小南
还有什么情况下才按实际输出整数部分?
2010-04-01 11:43
亚小南
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:69
专家分:136
注 册:2009-11-19
收藏
得分:0 
回复 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位

心语,这样能理解吗
2010-04-01 12:45
心雨123aa
Rank: 2
来 自:湛江
等 级:论坛游民
帖 子:55
专家分:38
注 册:2010-3-28
收藏
得分:0 
回复 5楼 亚小南
thanks
2010-04-01 19:55
快速回复:这里的6 7 8不是代表总的长度吗?结果为什么一样?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029456 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved