Ошибка в коде

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm

Ошибка в коде

Сообщение Alex »

Код

Код: Выделить всё

int temp1 = (current_temp1 - (int)current_temp1) * 100;

sprintf(buf, "GET /objects/?object=sensorKotel&op=m&m=tempChanged&t=%0d.%d HTTP/1.0", (int)current_temp1, abs(temp1));
совершает аж 2 ошибки

во-первых теряется «минус» между значениями -1 и 0. Значение -0,5 превращается в 0,5. И этот диапазон показывается температуру на луне.

во-вторых некорректно переводятся сотые доли. Значение 0,06 передаётся как 0,6. На улице 0, а показывает почти 1 градус.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Контактная информация:

Re: Ошибка в коде

Сообщение sergejey »

Ок, а как правильно-то? )

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm

Re: Ошибка в коде

Сообщение Alex »

Как правильно я хз, потму, что не программист, но для себя нарисовал такой костыль.

Код: Выделить всё

 if ((current_temp1 < 0) && (current_temp1 > -1)) {
        setReqSensor2("tempStreet", "-", (int)current_temp1, abs(temp1_)); 
      } else {
         setReqSensor2("tempStreet", "", (int)current_temp1, abs(temp1_)); 
      }
Вызывается такая функция

Код: Выделить всё

 void setReqSensor2(char s[], char ss[], int n, int nn) {
  sprintf(buf, "GET /objects/?object=%s&op=m&m=statusChanged&v=%s%0d.%d HTTP/1.0", s, ss, n, nn);
  sendHTTPRequest();
} 
функция введена раньше по необходимости (для экономии оперативной памяти).

С сотыми долями пока не разбирался.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Контактная информация:

Re: Ошибка в коде

Сообщение sergejey »

Я на processing тоже не сильный программист, поэтому переспросил )
В общем, надо поискать в сети решение.

А насчёт функции это хорошо -- возьму на вооружение.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Ответить