c# – 将double与0进行比较是错误的:doubleVariable == 0?

前端之家收集整理的这篇文章主要介绍了c# – 将double与0进行比较是错误的:doubleVariable == 0?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
可以这样做吗?
double doubleVariable=0.0;
if (doubleVariable==0) {
   ...
}

或者这个代码会受到潜在的四舍五入问题的困扰?

解决方法

不过,如果你只是比较0,那么这个比较完全合法,因为比较的右边会自动加倍.另一方面,如果要与== 0.10000001进行比较,则会产生所有四舍五入的错误

你最好还是阅读关于浮点数的讨论,这里是0比较:Is it safe to check floating point values for equality to 0?

此外,这个讨论对于浮标上的奇怪的精度问题非常有帮助:Why the result is different for this problem?

即下方会产生错误

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

猜你在找的C#相关文章