当我将双精度数与零进行比较时,为什么 Resharper 会抱怨?

2024-02-04

If I do

double d = 0;
if (d == 0) {
  ...
}

Resharper 在比较中抱怨d == 0关于“浮点数与相等运算符的比较。舍入值时可能会损失精度。”

为什么?将精确的零表示为双精度型或浮点数并不困难,不是吗?

我知道如果我与其他一些值(例如 0.2,没有精确的二进制表示形式)进行比较,这样的警告将是相关的。


Resharper 不会分析 double 变量如何获取其值。

经过几次计算后,双精度值很少是精确的,因此 resharper 警告您将双精度值与精确值进行比较并不是一个好主意。

double x = Math.Sqrt(2);
double d = x * x;

Console.WriteLine(d == 2);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当我将双精度数与零进行比较时,为什么 Resharper 会抱怨? 的相关文章

随机推荐