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

Zen
Offline
Зарегистрирован: 10.12.2015

Пишу код и вот почти на финише столкнулся с проблемой записи отрицательной переменной типа 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 с минусом смотрится не очень:( Прошу посодействовать:)))
Что не так? Как с этим бороться?

axill
Offline
Зарегистрирован: 05.09.2011

eeprom здесь ни при чем. курите код которые рисует минус у нуля

Mr.Privet
Mr.Privet аватар
Offline
Зарегистрирован: 17.11.2015

а куда у вас этот минус выводится? у меня такие минусы выскакивают, когда число в диапазоне от -0,04 до -0,01 округляются до одного знака после запятой. я делал так, if(x<0.00||x>-0.04){x=0.00}

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Короче, это мы читать точно не будем: https://en.wikipedia.org/wiki/IEEE_floating_point

И это мы тоже читать не станем: https://en.wikipedia.org/wiki/Signed_zero

Но по секрету, скажу - что есть такое страшное понятие, как бит знака. И для того, чтобы -0.0 в вашем случае превратить в 0.0, то достаточно сделать:

 -0.0 + 0.0