如果我这样做了
double d = 0;
if (d == 0) {
...
}Resharper在比较d == 0上抱怨“浮点数与相等运算符的比较。舍入值时可能会损失精度。”
为什么?将精确的零表示为双精度型或浮点型并不难,不是吗?
我理解这样的警告是相关的,如果我将其与其他一些值进行比较,例如0.2,它没有确切的二进制表示。
发布于 2012-05-21 19:38:47
通常,使用双精度计算是不精确的。将双精度数与精确值进行比较可能会有问题。与intervallmight相比可能更安全。
if ((d > -0.000001) && (d < +0.000001)) {
...
}在比较日期时也是如此
if ((date >= DateTime.parse("2012-05-21T00:00:00")) &&
(date <= DateTime.parse("2012-05-21T23:59:59"))) {
}https://stackoverflow.com/questions/10684365
复制相似问题