условие сравнения целых чисел с погрешностью
- Войдите на сайт для отправки комментариев
Чт, 12/04/2018 - 14:47
Здравствуйте. Подскажите как реализовать сравнение двух переменных с погрешностью?
Допустим есть значение от переменного резистора "val", плавное нарастание другой переменной "i" от 0 до значения "val" по достижении равенства "i==val" но с погрешностью 1-2 единици, выполняется определенный код. Суть проблеммы в том что при достижении равенства значение от переменного резистора пляшет плюс минус 1-2 единици и система постоянно подстраивается, подтягивая переменную i до значения val, а нужно что бы при погрешности 1-2% или 1-2 единици условие равенства выполнялось.
if (abs(i-val) < DVA_PROCENTA) { Serial.println "Все в порядке, это норма"; }
abs(val-i)<delta
UPD: Упс.. sadman первый успел :)
if (abs(i-val) < DVA_PROCENTA) { Serial.println "Все в порядке, это норма"; }
Если "DVA PROCENTA", то
if (abs(i-val)*200/(i+val) < 2/*DVA_PROCENTA*/)
Ууууффф чуток заморочено. Сделал как чайник наверное, простым тройным "или", но работает. Без лишней математики начинающим мозгам проще понять
if ((i+1)==val||(i-1)==val||i==val) { все нормально}
if ((i+1)==val||(i-1)==val||i==val) { все нормально}
Вот так.
А ты, динозавор, продолжай умничать дальше ))
Знанием арифметики четвертого класса он тут решил похвастаться. Проще надо быть! Три условия и всё.
Ууууффф чуток заморочено. Сделал как чайник наверное, простым тройным "или", но работает. Без лишней математики начинающим мозгам проще понять
if ((i+1)==val||(i-1)==val||i==val) { все нормально}
if ((i-1)<=val&&(i+1)>=val) { все нормально}
В данном случае погрешность можно расширять.