4

簡単な質問: 次のコードは double の配列の最小値を見つけるために機能しますか (少なくとも 1 つの値が存在すると仮定します):

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 値や潜在的な無限大自体と比較したときに期待どおりに動作するかどうかです。

4

2 に答える 2

6

Double.POSITIVE_INFINITY を使用しても安全です。仕様書より

NaN 以外のすべての値は順序付けられ、負の無限大はすべての有限値より小さく、正の無限大はすべての有限値より大きくなります。

于 2013-09-13T21:10:36.050 に答える
2

少なくとも 1 つの値が存在すると想定しているため、配列の最初の要素 (values[0) に最小値を設定するだけです。要素が 1 つしかない場合は最小でなければならず、それ以外の場合はそれに応じて更新されます。

于 2013-09-13T20:55:18.387 に答える