简单问题:以下代码是否可用于查找双精度数组中的最小值(假设至少存在一个值):
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与其他(实际)双重值以及潜在的无限性本身相比,是否会按预期运行。
答案 0 :(得分:5)
使用Double.POSITIVE_INFINITY是安全的。来自the specification
除NaN以外的所有值都是有序的,负无穷小 比所有有限值,正无穷大大于所有有限值 值。
答案 1 :(得分:1)
只需将最小值设置为数组的第一个元素(值[0],因为您假设至少存在一个值。如果只有一个元素,则必须是最小元素,否则,它将相应更新。