HAL9000
HAL9000

Reputation: 3751

Is it correct to compare a double to zero if you previously initialized it to zero?

I learnt that comparing a double using == is not a wise practice. However I was wondering if checking if a double has been initialized could be dangerous or not. For example, knowing that a variable doubleVar cannot be zero if it has been initialized, is it safe to do this?

Foo::Foo(){
    doubleVar = 0.0;  // of type double
}

void Foo::Bar(){
    if(doubleVar == 0){ // has been initialized?
        //...
    }else{
        //...
    }
}

Upvotes: 17

Views: 5016

Answers (1)

ouah
ouah

Reputation: 145839

In IEEE-754, long story short:

double d;

d = 0.0;
d == 0.0   // guaranteed to evaluate to true, 0.0 can be represented exactly in double

but

double d;

d = 0.1;
d == 0.1   // not guaranteed to evaluate to true

Upvotes: 21

Related Questions