I sometimes do the following in my code when I am being lazy:
double d = 0;
...
if( condition1 ) d = 1.0;
...
if (d == 0) { //not sure if this is valid
}
can I always count on the fact that if I set a double to be 0 I can later check in the code for it with d == 0 reliably?
I understand that if I do computations on d in the above code, I can never expect d to be exactly 0 but if I set it, I would think I can. All my testing so far on various systems seem to indicate that this is legitimate.
Yes, for most cases (i.e. excluding NaN): After the assignment
a = b;the conditiona == bis true. So as long as you’re only assigning and comparing to the thing you assign from, this should be reliable, even for floating-point types.