0

p および u プロパティを持つ多数の機能があります。配列内の最小および最大の p と u を見つけて、この switch ステートメントをループで作成したいと考えています。これは、約 99.9% の確率で機能します。でも。値が均等に分散されていて、平均が同じでない場合でも、最大値と最小値が同じになるデータセットが 1 つあります。困惑した。

            switch(true) {
                case p > max_p:
                    max_p = p;
                case u > max_u:
                    max_u = u;
                case p < min_p:
                    min_p = p;
                case u < min_u:
                    min_u = u;
            }

firebug でループを実行すると、u < max_u の場合に max_u が時々更新されることがわかります。たとえば、u = 0.066、max_u = 0.088 です。

Pycharm はフォールスルーの問題について教えてくれますが、ステートメントは私が投げた他のすべてのデータセットでうまく機能します。

ステートメントを 2 つに分けることができます。パフォーマンスの低下は軽微ですが、これがどのように発生するかを理解したいと思います。

ありがとう、デニス

編集:

データセットがステートメントを中断することなく完全に正常に機能することを 2 つのステートメントに分割します。

            switch(true) {
                case p > max_p:
                    max_p = p;
                case p < min_p:
                    min_p = p;
            }
            switch(true) {
                case u > max_u:
                    max_u = u;
                case u < min_u:
                    min_u = u;
            }

編集:私は与えられた答えを受け入れましたが、なぜこのようなことが起こるのかまだ困惑しています.

ここに画像の説明を入力

4

1 に答える 1