| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 231 人关注过本帖
标题:求助??为什么输出的答案不同??
收藏  订阅  推荐  打印 
cindyjyz
Rank: 1
等级:新手上路
帖子:8
积分:186
注册:2008-5-29
求助??为什么输出的答案不同??

//求分数序列:2/1,3/2,5/3,8/5,13/8,21/13……的前50项制之和的程序
#include<iostream.h>
void main()
{
   int temp;
   float sum=0.0,z=2.0,m=1.0;
   int k=0;
   while(k<50){
      sum=sum+z/m;
      temp=m;
      m=z;
      z=z+temp;
      k=k+1;
   }
   cout<<"The sum of the 50 number is :"<<sum<<endl;
}
这样的话输出是78.3042


//求分数序列:2/1,3/2,5/3,8/5,13/8,21/13……的前50项制之和的程序
#include<iostream.h>
void main()
{
   int temp,z=2,m=1;
   float sum=0.0;
   int k=0;
   while(k<50){
      sum=sum+(float)z/m;
      temp=m;
      m=z;
      z=z+temp;
      k=k+1;
   }
   cout<<"The sum of the 50 number is :"<<sum<<endl;
}
这样的话输出是74.1559

我觉得两个程序做同件事情都可以啊,为什么答案会不同??
搜索更多相关主题的帖子: sum  int  temp  float  输出  
2008-5-29 23:47
余来
Rank: 12Rank: 12Rank: 12
等级:版主
威望:25
帖子:954
积分:10248
注册:2006-8-13

应该是z/m 和加(float)z/m得到的返回值不同,导致最终结果不同

2008-5-30 11:31
cindyjyz
Rank: 1
等级:新手上路
帖子:8
积分:186
注册:2008-5-29
追问~

但问题是...先定义z,m为float再除得出的值 和 定义z,m为int除后在强制为float得的值应该是同一回事的啊?

如果两种是不同的,那么要完成两个浮点数相除取值,哪个更精确呢??谢谢!!
2008-5-30 12:34
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.051205 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved