| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 704 人关注过本帖
标题:[求助]为什么没有 1.0 输出
只看楼主 加入收藏
henry827
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-7-18
收藏
 问题点数:0 回复次数:8 
[求助]为什么没有 1.0 输出

#include<iostream.h>
void main()
{
for(float x=0; x<=1.0; x=x+0.1)
cout<<x<<",";
cout<<endl;
}


期望显示 0,0.1,0.2...0.9,1.0
实际显示 0,0.1,0.2...0.9

当x=0.9的时候就退出了循环,不知道是哪里出了问题,请高手指点

[此贴子已经被作者于2006-8-8 15:22:00编辑过]

搜索更多相关主题的帖子: 输出 cout float void 
2006-08-08 15:15
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 
说错了,不好意思。

[此贴子已经被作者于2006-8-8 17:24:45编辑过]



2006-08-08 17:22
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 
[CODE]#include <iostream>

using namespace std;

int main()
{
for(double x=0; x<=1.0; x=x+0.1)
cout<<x<<", ";
cout<<endl;
cin.get();
}[/CODE]

2006-08-08 17:30
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 
如果不想改變精確度就改變判斷
x<1.1f
------------------------------------------
個體原因誰能給個說明???

當 x=0.9f 時, 執行 x=x+0.1f, 此時 x=?? 致使 x<=1.0f 不成立....迷惑中.

逐步跟蹤調試時, x = 1.00000, 但卻退出了循環.???

原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-09 00:09
henry827
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-7-18
收藏
得分:0 
以下是引用yeshirow在2006-8-9 0:09:27的发言:
如果不想改變精確度就改變判斷
x<1.1f
------------------------------------------
個體原因誰能給個說明???

當 x=0.9f 時, 執行 x=x+0.1f, 此時 x=?? 致使 x<=1.0f 不成立....迷惑中.

逐步跟蹤調試時, x = 1.00000, 但卻退出了循環.???

我也做了这个调试的,结果和你一样。还请高手给我们指点

2006-08-14 10:22
henry827
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-7-18
收藏
得分:0 
以下是引用woodhead在2006-8-8 17:30:22的发言:
[CODE]#include <iostream>

using namespace std;

int main()
{
for(double x=0; x<=1.0; x=x+0.1)
cout<<x<<", ";
cout<<endl;
cin.get();
}[/CODE]

问题已经解决,谢谢woodhead,但是请问一下这里为什么使用了命名空间就好了,我实在是不明白

2006-08-14 10:23
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
这不是命名空间的问题,是 double的问题

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-08-14 15:41
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 
最后还是有错,实际上换成了double,x的值最后仍不会是1.0,你们可以换成double都跟踪试试
用浮点数时首先要记住的是:不可将浮点数与数字比较,因为有精度上的缺失,这很重要,一般用<=和>=来代替==和!=,上面的代码中应该替换为(x-1.0)<=0.0001(或者其它你认可的精度)

世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-08-14 16:14
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 
aogun 说的对,我对浮点数的比较 认识有问题.

浮点数的比较应该是 比较他们之间的差值和给定的精度的关系.

多谢aogun 提醒,要不咱就误导别人了.


2006-08-14 21:25
快速回复:[求助]为什么没有 1.0 输出
数据加载中...
 
   



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

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