C++ 双重比较类型的变量总是返回false
我的代码是这样的:C++ 双重比较类型的变量总是返回false,c++,C++,我的代码是这样的: double TMR_HV ; .... TMR_HV =2.0; // in another part of my code void RTKAPI Tempos10(void * p) // task for timers { while(1) { if (TMR_HV > 0.00) TMR_HV -= 0.01; else TMR_HV = 0.00; RTKDelay(1); } } 如
double TMR_HV ;
....
TMR_HV =2.0; // in another part of my code
void RTKAPI Tempos10(void * p) // task for timers
{
while(1) {
if (TMR_HV > 0.00) TMR_HV -= 0.01;
else TMR_HV = 0.00;
RTKDelay(1);
}
}
如果,则条件
始终为false。有人能帮我吗?声明TMR\U HV变量不在其他函数中很重要。它应该是全球性的。我这样解决了我的问题。
我创建了这个函数
int DblComp(double A, double B)
{
LONG32 aL;
LONG32 bL;
aL = (LONG32) ( A * 1000.0);
bL = (LONG32) ( B * 1000.0);
if (aL < bL) return (-1);
else if (aL == bL) return (0);
else return (1);
}
Maior定义为1如发布代码中所示,变量未初始化。它是在别的地方初始化的吗?如果不是,它的值可以是任何值。也许TMR_HV是NaN或+inf,变量是全局变量,初始化为0.0,当我们在计时器上放置断点时,初始值为0.0,它按预期运行。当变量的值大于0.0时,它开始减小,并且从不停止。是的,它是一个全局变量,它的声明如下:double TMR_HV=0.0;
if (DblComp(ReadWriteDisk_C, 0.00) == MAIOR)
ReadWriteDisk_C -= 0.01;
else ReadWriteDisk_C = 0.00;