我正在尝试检查一个值是否等于另一个值的 + 或 - 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/