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;
}
編集:私は与えられた答えを受け入れましたが、なぜこのようなことが起こるのかまだ困惑しています.