设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 737|回复: 8
打印 上一主题 下一主题

[求助]为什么没有 1.0 输出

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-3 04:08:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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的时候就退出了循环,不知道是哪里出了问题,请高手指点
2#
发表于 2009-11-3 04:08:13 | 只看该作者
说错了,不好意思。
回复 支持 反对

使用道具 举报

3#
发表于 2009-11-3 04:08:14 | 只看该作者
  1. #include <iostream>

  2. using namespace std;

  3. int main()
  4. {
  5. for(double x=0; x<=1.0; x=x+0.1)
  6. cout<<x<<", ";
  7. cout<<endl;
  8. cin.get();
  9. }
复制代码
回复 支持 反对

使用道具 举报

4#
发表于 2009-11-3 04:08:15 | 只看该作者
如果不想改變精確度就改變判斷
x<1.1f
------------------------------------------
個體原因誰能給個說明???

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

逐步跟蹤調試時, x = 1.00000, 但卻退出了循環.???
回复 支持 反对

使用道具 举报

5#
发表于 2009-11-3 04:08:16 | 只看该作者
以下是引用yeshirow在2006-8-9 0:09:27的发言:

如果不想改變精確度就改變判斷
x<1.1f
------------------------------------------
個體原因誰能給個說明???

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

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

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

使用道具 举报

6#
发表于 2009-11-3 04:08:17 | 只看该作者
以下是引用woodhead在2006-8-8 17:30:22的发言:
  1. #include <iostream>

  2. using namespace std;

  3. int main()
  4. {
  5. for(double x=0; x<=1.0; x=x+0.1)
  6. cout<<x<<", ";
  7. cout<<endl;
  8. cin.get();
  9. }
复制代码

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

使用道具 举报

7#
发表于 2009-11-3 04:08:18 | 只看该作者
这不是命名空间的问题,是 double的问题
回复 支持 反对

使用道具 举报

8#
发表于 2009-11-3 04:08:19 | 只看该作者
最后还是有错,实际上换成了double,x的值最后仍不会是1.0,你们可以换成double都跟踪试试
用浮点数时首先要记住的是:不可将浮点数与数字比较,因为有精度上的缺失,这很重要,一般用<=和>=来代替==和!=,上面的代码中应该替换为(x-1.0)<=0.0001(或者其它你认可的精度)
回复 支持 反对

使用道具 举报

9#
发表于 2009-11-3 04:08:20 | 只看该作者
aogun 说的对,我对浮点数的比较 认识有问题.

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

多谢aogun 提醒,要不咱就误导别人了.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 14:56 , Processed in 0.100404 second(s), 8 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表