在Java中使用Double.POSITIVE_INFINITY来查找最小值

don*_*ton 3 java double min minimum infinity

简单的问题:以下代码是否可用于查找双精度数组中的最小值(假设至少存在一个值):

double[] values = ...

double currentMin = Double.POSITIVE_INFINITY;

for(int i = 0; i < values.length; i++) {
    if(values[i] < currentMin) {
        currentMin = values[i];
    }
}

return currentMin;
Run Code Online (Sandbox Code Playgroud)

问题的关键在于POSITIVE_INFINITY与其他(实际)双重值以及潜在的无限性本身相比是否会表现得如预期.

rol*_*lfl 5

使用Double.POSITIVE_INFINITY是安全的.从规范

NaN以外的所有值都是有序的,负无穷大小于所有有限值,正无穷大大于所有有限值.