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

 
 
> strtofloat in IAR
odys
сообщение Dec 11 2009, 15:07
Сообщение #1





Группа: Участник
Сообщений: 3
Регистрация: 29-11-09
Пользователь №: 53 949



Всем привет!!!
Уважаемые спецы у меня маленький вопрос..
Возможно ли в IAR 5.30 преобразование типа (я имею ввиду готовую функцию)
float a=strtofloat("554.234");
или
char buff[]="3534.475";
float a=strtofloat(buff);
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
VAI
сообщение Dec 12 2009, 07:24
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 120
Регистрация: 17-06-04
Пользователь №: 37



Или пишете свою функцию, алгоритм простейший:
- каждая последующая цифра слева от точки (если её нет, то от конца строки) умнодается на 1, 10, 100 и т.д.
- каждая последующая цифра справа от точки умнодается на 0.1, 0.01 и т.д.
Вот небольшой пример:
Код
/* --- mysscanf_f() --------------------------------------------------------------------------------------- **
.*  Преобразование из строки  в формате "% *.*f" в число double
.* *s - указатель на строку
.* *d - указатель на double
.* -------------------------------------------------------------------------------------------------------- */
static void mysscanf_f( char *s, double *d )
{
int sign = 0;
double m;

  for (; *s == ' '; s++ ) // пробелы вначале строки пропустим
   ;
  if ( *s == '-' ) // смотрим знак
  { s++;
    sign = 1;
  }
  for ( m = 10., *d = 0.; *s != '.' && *s != '\0'; s++ )          // целая часть
  { *d *= m;
    *d += (double)( *s - '0' );
  }
  for ( m = 0.1; *s != '\0'; s++ )                                // дробная
  { if ( *s == '.' )
      continue;
    *d += (double)( *s - '0' ) * m;
    m *= 0.1;
  }
  if ( sign )
    *d = -*d;
}


--------------------
Если зайца бить, его можно и спички научить зажигать
Сколько дурака не бей - умнее не будет. Зато опытнее
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 00:30
Рейтинг@Mail.ru


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