诡异的问题

huxiangking 2012-11-20 05:12:29
if判断中比较两个值,相等则进入if。
通过跟踪调试,发现两个值都是1.00000,float的类型,但结果不相等。
代码不给了,太罗嗦,举了例子。
#define STEP_SIZE = 0.1
float a;
float b;

//initialize
b=1;
a=0;

.....
while(1)
{
a+=STEP_SIZE; //更改a值得操作仅此一处
if(a == b)
{
//do something
}
}

当a,b达到1的时候,进入不了if语句。
编译环境vc++6.0,跟踪时如果直接改a值使之为1,能进入if,但不知道程序执行a为什么
不等于1;使用cfree跟踪时发现a的值变成了1.00000027,大概这样子吧。
求解。
...全文
112 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
livefrom 2012-11-20
  • 打赏
  • 举报
回复
我用的是int型好像也有这个问题
huxiangking 2012-11-20
  • 打赏
  • 举报
回复
引用 1 楼 mymtom 的回复:
浮点数的比较不要用 ==
版主强大,感觉问了一个太小儿科的问题了,呵呵
mymtom 2012-11-20
  • 打赏
  • 举报
回复
浮点数的比较不要用 ==

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧