| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 643 人关注过本帖
标题:大虾帮我看看这个程序为什么运行后 SUM=0
只看楼主 加入收藏
jimzxcvbn
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-8-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
大虾帮我看看这个程序为什么运行后 SUM=0
#include <stdio.h>
void main()
{
 double sum=0;
 float i=1,t=0,s=1;
 while(t>=1e-6)
  {
   sum+=t;
   s*=i;
   t=1/s;
   i++;
   }
 printf("sum=%f\n",sum);
}
搜索更多相关主题的帖子: 运行 SUM 
2010-08-16 21:15
燕强
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:78
专家分:188
注 册:2010-8-11
收藏
得分:10 
是因为 t >= le-6  为假。所以sum = 0.000000
可以测试这个表达式
#include<stdio.h>
int main(void)
{
    float t = 0;
    printf("%d",t >= 1e-6);
    return 0;
}

[ 本帖最后由 燕强 于 2010-8-16 21:35 编辑 ]
2010-08-16 21:33
jimzxcvbn
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-8-16
收藏
得分:0 
回复 2楼 燕强
#include<stdio.h>
int main(void)
{
    float t = 0;
    printf("%d",t >= 1e-6);
    return 0;
}
输出是0.那t>=1e-6 怎么会是假的呢?
2010-08-16 21:41
燕强
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:78
专家分:188
注 册:2010-8-11
收藏
得分:0 
对于为什么是假。还请高手来解决,,本人不是很清楚。。我测试了一下。。
#include<stdio.h>
int main(void)
{
    float t = 0;
    printf("%f\n",1e-6);
    printf("%f\n",0);
    printf("%d",t >= 1e-6);
    return 0;
}
结果 0 和1e-6 确实是一个数字0.000001.。。????
2010-08-16 21:55
suntea
Rank: 2
等 级:论坛游民
帖 子:59
专家分:88
注 册:2010-6-24
收藏
得分:0 
0,1
0代表假,1代表真.
2010-08-16 22:23
suntea
Rank: 2
等 级:论坛游民
帖 子:59
专家分:88
注 册:2010-6-24
收藏
得分:10 
float型的取值范围,多少来的? 百度一下吧.

超过取值返回就变成负数了,  0 >= 一个负数, 这个表达式肯定是假的;
2010-08-16 22:25
jimzxcvbn
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-8-16
收藏
得分:0 
回复 3楼 jimzxcvbn
我知道了。程序错在T=0.一开始T就等于0,已经符合while的条件了,所以等于0.谢谢你啊
2010-08-16 22:51
jimzxcvbn
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-8-16
收藏
得分:0 
回复 6楼 suntea
我刚查了。float的 范围够用的。就错在那t,谢谢你。
2010-08-16 22:53
lizanle521
Rank: 1
等 级:新手上路
帖 子:16
专家分:3
注 册:2010-8-7
收藏
得分:0 
1e-6可不是一个负数哦,他是1/1000000,
2010-08-16 23:28
快速回复:大虾帮我看看这个程序为什么运行后 SUM=0
数据加载中...
 
   



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

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