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

c, c++, floating-point

Solution

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

Problem

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{ //... } } ```

Original source

Related problems