Проблема связана с типом логики, используемой в коде, например (0.949019 <= red <= 0.949021). </p>
Вам необходимо заменить на ((0.949019 <= red) && (red <= 0.949021)) для выражения, которое будет оценено ожидаемым образом. </p>
Итак, все проверки условий типа (a <= variable <= b) необходимо изменить на ((a <= variable) &&(переменная <= b)).</p>
Ниже приводится подробное объяснение того, почему это не работает.
Приоритет оператора <= слева направо.Следовательно, выражение оценивается следующим образом: </p>
Сначала 'a' сравнивается с 'variable' и результат оценивается.
RESULT (затем «переменная») сравнивается с «b», и конечный результат найден.
Это не так, как вы хотите оценить выражение.