== Why is this an issue? include::../description.adoc[] === Noncompliant code example [source,csharp] ---- if ( !(a == 2)) { ...} // Noncompliant bool b = !(i < 10); // Noncompliant ---- === Compliant solution [source,csharp] ---- if (a != 2) { ...} bool b = (i >= 10); ---- ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) include::../message.adoc[] ''' == Comments And Links (visible only on this page) === on 30 Sep 2019, 23:05:18 Sergey Adamovski wrote: \"``++!(a>2)++``" is not always equivalent to \"``++a<=2++``". In case a == NaN (not a number), any compare to it will give "false". ``++(a>2) == false++`` and ``++(a<=2) == false++``. Therefore, "!(a>2)" will be ``++true++`` while "a+<=+2" ``++false++``. Equivalent of \"``++!(a>2)++``" would be \"``++(a<=2) || (double.IsNaN(a))++``" or \"``++(a<=2) || (float.IsNaN(a))++``" which is easier to read but longer to execute. One can * check whether comparison contains any float/double values that can be Not-A-Number _or_ * at least warn a user that it is not the same _or_ * remove this restriction include::../comments-and-links.adoc[] endif::env-github,rspecator-view[]