| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1542 人关注过本帖
标题:为什么不执行if内的语句?
只看楼主 加入收藏
youken
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2007-11-11
收藏
 问题点数:0 回复次数:4 
为什么不执行if内的语句?
k = u/v;
alfa = atan(k);
temp = ...;  // temp的值从CArray变量中用GetAt函数取得,并进行了表达式计算
left = ...;  // left取值同上
if ((alfa==left)&&(left==temp))
{
      ...
}

alfa、left、temp都是double类型的变量,这条语句,我debug了一下,发现alfa、temp和left的数值在计算后都是相同的,但是程序没有执行if内的语句,不知何原因?
搜索更多相关主题的帖子: 语句 left alfa temp 变量 
2007-11-29 14:53
Whnight
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2007-9-14
收藏
得分:0 
LZ怎么知道他们相同的,或者说,LZ怎么知道在调用if的时候他们是相同的?说不定之后改变了,
只有部分代码,不太能发现原因。。。。
2007-11-29 17:00
Arcticanimal
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:341
专家分:20
注 册:2007-3-17
收藏
得分:0 
double 不可以这样比较 !!!
由于计算精度的问题, 虽然你从调试器看到的他们的值是相同的, 但是这并不意味着他们是全等(64个bit全部相同)的 !
作差, 取绝对值, 判断是否小于所需精度

try new catch
2007-11-29 20:19
youken
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2007-11-11
收藏
得分:0 
原帖由 [bold][underline]Arcticanimal[/underline][/bold] 于 2007-11-29 20:19 发表 [url=http://bbs.][/url]
double 不可以这样比较 !!!
由于计算精度的问题, 虽然你从调试器看到的他们的值是相同的, 但是这并不意味着他们是全等(64个bit全部相同)的 !
作差, 取绝对值, 判断是否小于所需精度 ...

受教!谢谢!
2007-11-29 22:10
first_love
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2006-11-11
收藏
得分:0 
原帖由 [bold][underline]Arcticanimal[/underline][/bold] 于 2007-11-29 20:19 发表 [url=http://bbs.][/url]
double 不可以这样比较 !!!
由于计算精度的问题, 虽然你从调试器看到的他们的值是相同的, 但是这并不意味着他们是全等(64个bit全部相同)的 !
作差, 取绝对值, 判断是否小于所需精度 ...

同意,Double是不能直接比较大小的,要取绝对值, 判断是否小于所需精度

2007-11-30 00:11
快速回复:为什么不执行if内的语句?
数据加载中...
 
   



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

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