これは文字通り、私が今まで遭遇した中で最も奇妙なものです。というフロートがあり、ratingDecimal
いくつかの条件を使用してそれを比較します。条件は次のようになります。
if (ratingDecimal >= 0.0) {
if (ratingDecimal < 0.3 && ratingDecimal != 0.3) {
ratingDecimal = 0.0;
NSLog(@"bigger or equal to 0 and smaller than 0.3");
}
}
if (ratingDecimal >= 0.3) {
if (ratingDecimal < 0.8 && ratingDecimal != 0.8) {
ratingDecimal = 0.5;
NSLog(@"middle");
}
}
if (ratingDecimal >= 0.8) {
NSLog(@"bigger or equal to 0.8");
ratingDecimal = 1.0;
}
ここに奇妙な問題があります。を 0.8 に設定しratingDecimal
ました。コンソールは次のようにログに記録ratingDecimal
します。
0.8
しかし、呼び出し:
真ん中
ratingDecimal
が 0.3 以上で 0.8 より小さく、0.8 に等しくない場合にのみ呼び出す必要があります。
呼び出される必要があるステートメントは次のとおりです。
if (ratingDecimal >= 0.8) {
NSLog(@"bigger or equal to 0.8");
ratingDecimal = 1.0;
}
でも見えない
0.8以上
なぜ私の条件がとても退屈で複雑なのか不思議に思われるかもしれません。
if (ratingDecimal >= 0.3 < 0.8)
彼らは以前はそうでしたが、これがうまくいかなかったので、私は声明を分解し続けましたが、それでも奇妙な振る舞いをしています.
なぜこうなった!?
画像の例を次に示します。