| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 662 人关注过本帖
标题:为什么会是死循环?? != 有什么作用
只看楼主 加入收藏
少林小和尚
Rank: 2
等 级:论坛游民
帖 子:57
专家分:26
注 册:2013-3-31
结帖率:73.68%
收藏
已结贴  问题点数:20 回复次数:9 
为什么会是死循环?? != 有什么作用
#include<stdio.h>
main()
{
    double i;
    for(i=0;i!=10;i+=0.1)
        printf("%.1lf\n",i);
    return 0;
}
搜索更多相关主题的帖子: double return 
2013-04-25 22:17
扬州笑哈哈
Rank: 2
等 级:论坛游民
帖 子:26
专家分:34
注 册:2013-3-1
收藏
得分:3 
马克一下

很多事不是看你做没做,而是看你能做多久
2013-04-25 22:32
笑傲
Rank: 8Rank: 8
来 自:迪拜
等 级:蝙蝠侠
威 望:5
帖 子:223
专家分:856
注 册:2013-3-9
收藏
得分:3 
回复 楼主 少林小和尚
C语言中机器码表示的双精度实型变量是有误差的,在i从0加到10的过程中,并不是一直以0.1为递增,可能是0.1000000001或0.10000000000001等等,具体跟机器类型有关。所以,在for循环体中最好用小于、大于、小于等于或大于等于,而不要用等于或不等于。你把你的程序改成double i; for(i=9.8;i !=10;i+=0.1) printf("%2.15lf\n",i);就能看到我说的这个误差。

[ 本帖最后由 笑傲 于 2013-4-25 22:42 编辑 ]

练就一身本领,只为笑傲江湖!
2013-04-25 22:39
chenzhibin07
Rank: 2
等 级:论坛游民
帖 子:57
专家分:64
注 册:2013-4-10
收藏
得分:3 
for(i=0;i!=10;i+=0.1)这个有点怪。
   i+=0.1
2013-04-25 23:02
Ryker
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:145
专家分:420
注 册:2013-2-19
收藏
得分:3 
不要用浮点数做精确运算...

比如 i != 10 这种
2013-04-25 23:08
helloUJS
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:168
专家分:731
注 册:2013-3-27
收藏
得分:3 
在计算机中使用有限位二进制表示一个数据,十进制数0.1是无法用有限位二进制精确表示的,因此在计算机中,0.1实际上是一个不精确的数值,对于实数,一般采用fabs(x-a)<eps作为x与a近似相同的条件,eps是设定的精度要求,比如1e-6。
2013-04-25 23:17
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:3 
你哪本书上没有介绍如何比较一个float数是否为0的代码?

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-04-26 06:52
我叫沃恩
Rank: 12Rank: 12Rank: 12
来 自:Asia
等 级:贵宾
威 望:10
帖 子:1234
专家分:3865
注 册:2013-3-29
收藏
得分:3 
i自增的数太小,自增时可能出现误差!

因为我是菜鸟,所以应该被骂! 细节+坚持=成功!
2013-04-26 07:26
fanpengpeng
Rank: 8Rank: 8
来 自:南极洲
等 级:蝙蝠侠
威 望:7
帖 子:299
专家分:849
注 册:2013-2-1
收藏
得分:3 
你可以用i<10
for循环体中 用 i!=x 的形式 一般用于数组下标这类 左闭右开的区间
其直接的含义是 两端不等 表示数组有元素 两端相等就表示数组为空
你这里用 != 不光技术上不行 含义上也说不通

人生是一场错过 愿你别蹉跎
2013-04-26 08:28
少林小和尚
Rank: 2
等 级:论坛游民
帖 子:57
专家分:26
注 册:2013-3-31
收藏
得分:0 
回复 7楼 peach5460
这个没有   我的是英文的  基本看不懂
2013-05-06 23:36
快速回复:为什么会是死循环?? != 有什么作用
数据加载中...
 
   



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

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