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(使用前将#替换为@)