例1. 3270 > 12 真なので結果は 1 69937 <= 0.000392 偽なので結果は 0 8192 = 8192 真なので結果は 1 2 != 7 真なので結果は 1否定 ! は、値が 0 の場合は真、それ以外は偽となります。
例2. !0 真なので結果は 1 !6639 偽なので結果は 0否定はゼロとの比較と同じです。
!0 → 0 = 0 0 と一致するので真 !6639 → 6639 = 0 0 と一致しないので偽否定の記号 ! は数値の前に置く必要があります(「演算子」参照の事)。
一致・不一致の比較は、記述の仕方によっては、演算誤差の影響で正確な結果を得られない場合があるので注意が必要です。問題がある形の一例. (7200 + 7200 * 8 / 100) = (7200 * (1 + 8 / 100))この場合、左辺は 7776 となりますが、右辺は演算誤差により 7776.000000000001 となるため、結果は不一致となります。 計算目的にもよりますが、もし、小数点以下切捨てなのであれば、関数 int を使用してください。 int(7200 + 7200 * 8 / 100) = int(7200 * (1 + 8 / 100))実数で比較する場合は、差の絶対値と、0 と見なせる値との比較を行います。 abs((7200 + 7200 * 8 / 100) - (7200 * (1 + 8 / 100))) <= 1e-6 二つの式の差が 0 と見なせる値以下の場合は一致、 それ以外は不一致 |
例3. 変数x が 32 〜 684 の範囲内にあるか調べる. x >= 32 & x <= 684この場合は、x が 32 以上、且つ 684 以下の時は真、それ以外は偽となります。
例4. 変数y が英文字であるかを調べる. y >= 'A' & y <= 'Z' | y >= 'a' & y <= 'z'
((y >= 'A') & (y <= 'Z')) | ((y >= 'a') & (y <= 'z'))
例5. (x != 0) & (150 / x > 0)論理演算は「計算」なので、最初の比較が偽であっても、後続の比較も実行されます。