简单的问题:以下代码是否可用于查找双精度数组中的最小值(假设至少存在一个值):
double[] values = ...
double currentMin = Double.POSITIVE_INFINITY;
for(int i = 0; i < values.length; i++) {
if(values[i] < currentMin) {
currentMin = values[i];
}
}
return currentMin;
问题的关键在于POSITIVE_INFINITY与其他(实际)双重值以及潜在的无限性本身相比是否会表现得如预期.
解决方法:
使用Double.POSITIVE_INFINITY是安全的.从the specification起
All values other than NaN are ordered, with negative infinity less
than all finite values, and positive infinity greater than all finite
values.