我正在尝试检查一个值是否等于另一个值的 + 或 - 2。

这是我遇到的。

    for (int lineNumber : errorLineList) {
        if (lineNumber == startLineNumber
                || lineNumber == (startLineNumber + 1)
                || lineNumber == (startLineNumber + 2)
                || lineNumber == (startLineNumber - 1)
                || lineNumber == (startLineNumber - 2)) {
            lineFound = true;
            break;
        }
    }

但在这里,如果我希望容差为 5,那么我必须添加 10 个检查。

在java中还有其他优雅的方法可以做到这一点吗?

最佳答案

使用 double 时通常需要这样做,因为您可能会得到小的舍入误差。

if(Math.abs(lineNumber - startLineNumber) <= 2)

您可以将 2 更改为 5。这是说;如果两个值之间的差异小于 2。即它可能是 -2、-1、0、1 或 2。

对于 double 类似的解决方案是使用
if(Math.abs(a - b) < ERR) // where ERR is 1e-4 or 1e-9

使用什么 ERR 值取决于具体情况。

关于java - 用公差检查值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12383975/

10-10 18:32