I know we can't compare 2 floating point values using ==. We can only compare they are within some interval of each other.
I know
if(val == 0.512)
is wrong due to errors inherent in floating point calculations and conversion to binary and
should be
if (val in (0.512-epsilon, 0.512+epsilon))
But is 0 special? Can we compare floats exactly to 0? Or even that is incorrect? Particularly in the context of C# and Java?
double val = 0;
val = getVal();
if(val == 0)
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…