将double比较为0是不对的:doubleVariable == 0?

Nes*_*tor 12 c# double

可以这样做吗?

double doubleVariable=0.0;
if (doubleVariable==0) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

或者这段代码会遇到潜在的舍入问题?

Teo*_*gul 7

如果您只是与0进行比较,那么它是完全合法的,因为比较的右侧将自动转换为加倍.另一方面,如果您在哪里与== 0.10000001进行比较,它将产生所有舍入误差

你更好或者在这里阅读关于float to 0比较的讨论:将等式的浮点值检查为0 是否安全?

关于浮点数的奇怪精度问题,这个讨论也很有用:为什么这个问题的结果不同?

即以下将产生错误:

double d1 = 1.000001; double d2 =0.000001;
Console.WriteLine((d1-d2)==1.0);
Run Code Online (Sandbox Code Playgroud)