#1 2016-03-02 00:10:18

Zen
Учасник
Зареєстрований: 2015-12-10
Повідомлень: 13

Запись в EEPROM отрицательного значения переменной типа float

Пишу код и вот почти на финише столкнулся с проблемой записи отрицательной переменной типа float. Пишется то все хорошо (и отрицательные и положительные значения), только вот после записи отрицательной переменной, если записать в EEPROM значение 0,0, оно отображается «-0,0» Как убрать знак минус??? Он то не влияет на работу, просто у человека появится логичный вопрос «почему 0 со знаком минус»:(.
Вот кусок кода
if (digitalRead(buttonUp)==0)
          {
            corrU2 = corrU2+0.1;
            delay (150);
          }
            if (digitalRead(buttonDown)==0)
            {
              corrU2 = corrU2-0.1;
              delay (150);
            }
// значение изменяется от -0,5 до 0,5   
    if (corrU2>0.5) corrU2=0.5;
    if (corrU2<-0.5) corrU2=-0.5;

    if (digitalRead(buttonEnter)==0)
    {
       delay (200);
       EEPROM_float_write(36, corrU2);
       delay (100);
пробовал делать 0 по  модулю, пробовал добавлять очень малое положительное число….ничего не помогло.
Причем еще заметил непонятную непонятность, есть точно такой же кусок кода только для другого канала, пишет в EEPROM_float_write(32, corrU1); и вот куда сперва записал отрицательное значение, там и проявляется 0 с минусом:( В остальном все работает как надо, только вот 0 с минусом смотрится не очень:( Прошу посодействовать:)))
Что не так? Как с этим бороться?

Неактивний

#2 2016-03-02 10:10:13

alex_dol
Учасник
Зареєстрований: 2015-12-28
Повідомлень: 196

Re: Запись в EEPROM отрицательного значения переменной типа float

Попробуйте EEPROM.put() и EEPROM.get()

Неактивний

#3 2016-03-02 10:37:11

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Запись в EEPROM отрицательного значения переменной типа float

1 обнулите по пределам
if (fabs(data) < 0.00001 )  data = 0.0;
2 IEE754 поковыряйте
3 на целочисленную математику переходите

Неактивний

#4 2016-03-02 10:55:29

Zen
Учасник
Зареєстрований: 2015-12-10
Повідомлень: 13

Re: Запись в EEPROM отрицательного значения переменной типа float

NoName пише:

1 обнулите по пределам
if (fabs(data) < 0.00001 )  data = 0.0;
2 IEE754 поковыряйте
3 на целочисленную математику переходите

пробовал обнулять, пробовал и число по модулю.... не помогает. на целочисленное не могу, это коэффициент корректировки.
С IEE754 не работал, сейчас почитаю

Неактивний

#5 2016-03-02 11:05:17

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Запись в EEPROM отрицательного значения переменной типа float

80 00 00 00 hex=-5,87747175411144e-39 (минимальное отрицательное число
проверьте что куда пишется
а ьрпарпааоппдп.ддгщгоаоашгодлод гнек4 шщ гщ   рпр

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

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