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

时间:2011-04-21 00:40:25

标签: java double

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

p = correct / total

你能确保你不要除以零:

double p;
if (total == 0.0) {
  p = 0.0;
}
else {
  p == correct / total;
}

或者检查你是否有NaN?

double p = correct / total;
if (Double.isNaN(p)) {
  p = 0.0;
}

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

1 个答案:

答案 0 :(得分:7)

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