诡异的问题
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,大概这样子吧。
求解。