在Java中处理NaN的正确方法是什么?

sch*_*mmd 9 java double

例如,如果您正在计算精度

p = correct / total
Run Code Online (Sandbox Code Playgroud)

你能确保你不要除以零:

double p;
if (total == 0.0) {
  p = 0.0;
}
else {
  p == correct / total;
}
Run Code Online (Sandbox Code Playgroud)

或者检查你是否得到了NaN?

double p = correct / total;
if (Double.isNaN(p)) {
  p = 0.0;
}
Run Code Online (Sandbox Code Playgroud)

方法有益,还是个人偏好?

cor*_*iKa 7

我会使用第一种方法,但不是比较为0,我会比较Math.abs(total) < TOLERANCE其中TOLERANCE是一些小值,如0.0001.这将防止非常接近0的结果偏离结果.