v3x = v1x + v2x;
then my compiler tells me that v3x = -0 but i think it must be 0
Dunno about this one. Maybe because you added to a negative number and the
result was not greater than zero, the result was negative zero rather than
and my second problem is:
how to check if something like this happens ?
if (v3x = -0) doesn’t work !!!
and a check for (v3x = 0) does the same
In this example you used = instead of == and the value of v3x = 0 would be
zero, i.e. false. (I think this is true even though we’re dealing with
floating-point values, but I haven’t checked so please feel free to correct
me on that.)
But testing two floating-point values for equality is rarely a good idea
anyway since it’s likely that the computer can’t represent the value
exactly. (The way I understand it, it might not even be able to even if it
could represent it exactly as an integer.) In this particular case it might
work since 0, -0, 2 and -2 all have exact representations according to the
IEEE standard, but in general it should be much safer to test if the
difference between them is “small enough”.