Проверьте, попадает ли отрицательное число в диапазон - PullRequest
0 голосов
/ 11 мая 2018

У меня есть код, который постоянно читает значения температуры, и значения температуры всегда будут отрицательными.Как записать условие If в C #, чтобы проверить, падает ли эта температура в диапазоне от -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, условие все же проходит.

Ответы [ 5 ]

0 голосов
/ 11 мая 2018

-46 меньше, чем -44, поэтому вы должны изменить свое состояние.

if (!(cameraTemp <= -44 && cameraTemp >= -46))
0 голосов
/ 11 мая 2018

Или попробуйте выполнить следующее, если хотите ввести диапазон от -44 до -46:

if (cameraTemp >= -46 && cameraTemp <= -44)
0 голосов
/ 11 мая 2018

Вы перевернули операторы для проверки температуры

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

-45 ниже -44 и выше -46: -)

0 голосов
/ 11 мая 2018

Вы смешиваете свои большие и меньшие.Во второй попытке вы не можете быть одновременно меньше -46 (например, -47, -48 и т. Д.) И больше -44 (например, -43, -42 и т. Д.)

if (!(cameraTemp <= -44 && cameraTemp >= -46))
0 голосов
/ 11 мая 2018

Вы должны попробовать следующее, если диапазон от -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.
...