Is it wrong to compare a double to 0 like this: doubleVariable==0?

后端 未结 6 706
夕颜
夕颜 2021-01-04 04:57

It is ok to do this?

double doubleVariable=0.0;
if (doubleVariable==0) {
   ...
}

Or this code would suffer from potential rounding problem

6条回答
  •  说谎
    说谎 (楼主)
    2021-01-04 06:00

    Nope it's perfectly legal if you are only going to compare against 0 as the right side of comparison will automatically casted to double. On the other hand, it would yield all the round-off errors if you where to compare against == 0.10000001

    You are better or reading the discussion about float to 0 comparison here: Is it safe to check floating point values for equality to 0?

    Also this discussion is very informative about weird precision problems on floats: Why the result is different for this problem?

    i.e. below will yield false:

    double d1 = 1.000001; double d2 =0.000001;
    Console.WriteLine((d1-d2)==1.0);
    

提交回复
热议问题