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;