4

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

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 与其他(实际)双精度值以及潜在的无穷大本身相比是否会按预期运行。

4

2 回答 2

6

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

除 NaN 之外的所有值都是有序的,负无穷小于所有有限值,正无穷大于所有有限值。

于 2013-09-13T21:10:36.050 回答
2

只需将最小值设置为数组的第一个元素 (values[0),因为您假设至少存在一个值。如果只有一个元素,则必须是最小值,否则将相应更新。

于 2013-09-13T20:55:18.387 回答