检查负数是否在一个范围内

Check if a Negative number falls within a range

我有一个代码可以不断读取温度值,而温度值总是负数。如何在 C# 中编写 If 条件来检查此温度是否在 -44 和 -46 的范围内。

我尝试了下面的代码,但条件仍然通过

             if (!Enumerable.Range(-44, 1).Contains(cameraTemp)
              || !Enumerable.Range(-45, 1).Contains(cameraTemp)
              || !Enumerable.Range(-46, 1).Contains(cameraTemp))

我也尝试了下面的代码,但有些情况仍然通过

             if (!(cameraTemp >= -44 && cameraTemp <= -46))

虽然我的温度值是-45,但是条件还是通过了。

如果范围是 -44 到 -46,您应该尝试以下操作。

 if (!(cameraTemp <= -44 && cameraTemp >= -46))

当我们下降到负数时,比如 0 到 -1。 0 大于 -1。同样的 -1 大于 -2。所以它是逆序的。

如果您对此感到困惑,那么您必须将值转换为绝对值,然后应用条件。

详细说明。

以下条件

1. if (!(cameraTemp <= -44 && cameraTemp >= -46))
   {
        // Some print or logic
   }

If you write condition above way then your logic only execute if temperature value is not between -44 to -46 including -44 and -46. 

  2. if ((cameraTemp <= -44 && cameraTemp >= -46))
       {
            // Some print or logic
       }
    If you write this way then it only execute for value -44 , -45 and -46.

你已经颠倒了运算符来检查温度

if (!(cameraTemp <= -44 && cameraTemp >= -46))

-45 不如 -44 但优于 -46 :-)

您混淆了大于和小于。在第二次尝试中,您不能同时小于 -46(例如 -47、-48 等)和大于 -44(例如 -43、-42 等)

if (!(cameraTemp <= -44 && cameraTemp >= -46))

或者,如果您想输入范围 -44-46,您应该尝试以下操作:

if (cameraTemp >= -46 && cameraTemp <= -44)

-46 小于-44 所以你必须扭转你的条件。

if (!(cameraTemp <= -44 && cameraTemp >= -46))