double比较类型的变量总是返回false

时间:2015-09-02 19:40:30

标签: 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);
    }
}

条件if始终为假。任何人都可以帮我这个吗?

2 个答案:

答案 0 :(得分:0)

将TMR_HV变量声明为不在其他函数中是很重要的。它应该是全球性的。

答案 1 :(得分:0)

我以这种方式解决了我的问题。 我创建了这个函数

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);
}

然后当我需要比较2个双变量时,我称之为

if (DblComp(ReadWriteDisk_C, 0.00) == MAIOR)
        ReadWriteDisk_C -= 0.01;
else ReadWriteDisk_C = 0.00;

Maior定义为1