原始双重等于NaN

Wil*_*oat 0 java

有人可以解释一下原始double类型NaN在跟随计算后是否可能等于.你能告诉我一些double可能最终结果的案例Nan吗?谢谢!

double averagePrecisionExisting = 0;
for (int i = 0; i < x; i++)
    averagePrecisionExisting += logicWhichReturnsPrimitiveDouble();

double meanAveragePrecisionExisting = averagePrecisionExisting / x.size();    
System.out.println("Mean average precision of existing algorithm  = " + meanAveragePrecisionExisting);
Run Code Online (Sandbox Code Playgroud)

输出: Mean average precision of existing algorithm = NaN

Jon*_*eet 7

假设您的循环是要使用的x.size(),那么它非常简单 - 如果x.size()为0,您将计算0/0,即NaN.

否则,它可能会因任何原因logicWhichReturnsPrimitiveDouble()返回a NaN.目前尚不清楚为什么你在帖子中的各个地方都强调了"原始"部分 - 原语double就像能够将NaN表示为一样Double.的确,这种类型Double.NaNdouble......