<分区>
我有一个 double[]
,它的值为 NaN
。当我将数组的元素相加时,NaN
的结果也是 NaN
。
这是怎么发生的?如何防止将此 NaN
添加到数组的其余部分?
<分区>
我有一个 double[]
,它的值为 NaN
。当我将数组的元素相加时,NaN
的结果也是 NaN
。
这是怎么发生的?如何防止将此 NaN
添加到数组的其余部分?
最佳答案
NaN
代表非数字。它可以arise in a variety of ways ,例如作为 0./0.
、sqrt(-1)
的结果,或作为涉及其他 NaN
的计算结果.
检查 v
是否为 NaN
的最简单方法是使用 Double.isNaN(v)
:
public static double sum(double arr[]) {
double sum = 0.0;
for (double val : arr) {
if (!Double.isNaN(val)) {
sum += val;
}
}
return sum;
}
编辑:@Stephen C 在评论中提出了一个很好的观点:在决定忽略 NaN
之前,明智的做法是了解它的来源。这可能是您代码中其他地方的错误导致的结果,并且通过盲目地忽略 NaN
,您可能只是在掩盖错误而不是修复它。
关于java - 什么是南?以及如何创建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8971371/