Primitive double equals to NaN

Can someone explain how does it possible that primitive double type equals to NaN after following computations. Can you tell me some cases when double could end up as Nan? Thanks!

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);

Output: Mean average precision of existing algorithm = NaN

Jon Skeet
people
quotationmark

Assuming your loop is meant to use x.size(), then it's pretty simple - if x.size() is 0, you'll be computing 0/0, which is NaN.

Otherwise, it could be that logicWhichReturnsPrimitiveDouble() returns a NaN for whatever reason. It's not clear why you've emphasized the "primitive" part in various places in your post - a primitive double is just as capable of representing NaN as Double. Indeed, the type of Double.NaN is double...

people

See more on this question at Stackoverflow