#1 Програмування Arduino » Ошибка оператора сравнения » 2019-12-15 03:36:50

arik
відповідей: 22

Доброго всем!
Есть код, всё работает правильно и корректно, но при выводе на экран происходит "баг" отображения.
в блоке вывода на экран код:

            if      (X<5)         {tft.print("0");}
            else if (X<10)        {tft.print("  ");tft.print(X,2); tft.print(" ");}
            else if (X<100)        {tft.print(" ");tft.print(X,1); tft.print(" ");}
            else                                               {tft.print("---");}

отображаются цифры от 0 до 100, но значение 10 отрабатывает с багом в виде появление лишнего 0.
значение высчитывается с тысячными, это нужно для программы, а вот отображать их не нужно, достаточно десятых.
так вот когда значение очень близко к числу 10.000-10.009 на экране появляется лишний 0.
как только значение достигает 9.999 или 10.010 - оператор сравнения отрабатывает корректно.

как этот баг можно поправить не изменяя точность вычисления? тем более так получается, что наблюдаемый/отображаемый параметр очень часто близок к значениям 9-10-11.
Спасибо!

Підвал форуму