реклама на сайте
подробности

 
 
> itoa куда дели?, преобразование int в char
d71
сообщение Mar 1 2006, 03:33
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 91
Регистрация: 24-12-05
Из: г. Благовещенск
Пользователь №: 12 614



ну вот, приехали, так и знал что-то будет не так.
надо выводить на индикатор, а у меня строка не сформирована, ну думаю сейчас, есть функции...
ага, а itoa нет...
может и туплю, но как-то неприятно


--------------------
нет ничего невозможного, есть трудные пути... других не ищем
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
d71
сообщение Mar 1 2006, 06:44
Сообщение #2


Частый гость
**

Группа: Новичок
Сообщений: 91
Регистрация: 24-12-05
Из: г. Благовещенск
Пользователь №: 12 614



в этот раз обошелся делением smile.gif
а насчет кода - да вы правы, вставил sprintf и охренел - 1.5 кило как с куста, выкинул...


--------------------
нет ничего невозможного, есть трудные пути... других не ищем
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Mar 1 2006, 09:35
Сообщение #3


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(d71 @ Mar 1 2006, 08:44) *
в этот раз обошелся делением smile.gif

Хорошей альтернативой операциям / % есть стандартная функция div, получающая частное и остаток сразу.
Go to the top of the page
 
+Quote Post
andrvisht
сообщение Mar 1 2006, 12:53
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 298
Регистрация: 29-08-05
Пользователь №: 8 064



Цитата(IgorKossak @ Mar 1 2006, 13:35) *
Цитата(d71 @ Mar 1 2006, 08:44) *

в этот раз обошелся делением smile.gif

Хорошей альтернативой операциям / % есть стандартная функция div, получающая частное и остаток сразу.

Например так
Код
unsigned char FloatToLCD(unsigned char StrNum, unsigned char StrPos, VarPrm vVar,
                         unsigned char Digits, bool isLeft)
{
  unsigned char    i = LEN_SYM_PRM;
  long    l;
  unsigned char    cBuf[LEN_SYM_PRM];
  ldiv_t DivRes;
  // переводим в целое
  for (unsigned char i = 0; i<Digits; i++) vVar *= 10.0;
  l = labs((long)vVar) + 0.5; // 0.5 для округления
  cBuf[i] = 0x00; // Добавляем конец строки
  while (i > 0)
  {
    DivRes = ldiv(l, 10);
    cBuf[--i] = 0x30 + DivRes.rem;
    l = DivRes.quot;
    if ((LEN_SYM_PRM - i) == Digits) cBuf[--i] = '.';
    if (Digits == 0)
    {
      if (l == 0) break;
    }
    else
    {
      if ((l == 0) && ((LEN_SYM_PRM - i) > (Digits + 1))) break;
    }
  }
  if (vVar < 0.0) cBuf[--i] = '-';
  // ...и выводим строку на ЖКИ
  if (isLeft == 0) LCDString(StrNum, (StrPos + 1 - LEN_SYM_PRM + i), LCDStr, (cBuf + i));
  else LCDString(StrNum, StrPos, LCDStr, (cBuf + i));
  return (LEN_SYM_PRM - i);
}
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 08:13
Рейтинг@Mail.ru


Страница сгенерированна за 0.01478 секунд с 7
ELECTRONIX ©2004-2016