Преобразование float и double в char[]

Kavaa
Offline
Зарегистрирован: 15.06.2017

Здравствуйте. Обшарил весь форум, но так решения и не нашел. Кто знает, подскажите пожалуйста, как выполнить наверное даже не преобразование типов, а скорей перевод значения типа float или double в char, таким образом чтобы я мог хранить число, например, 13.485918578 в переменной типа char[] = "13.485918578". Буду очень благодарен.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

ftoa() не?

Kavaa
Offline
Зарегистрирован: 15.06.2017

Arhat109-2 пишет:

ftoa() не?

Arduino IDE не может найти такую функцию. В какой бибилиотеке лежит не знаю.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Arhat109-2 пишет:

ftoa() не?

Не. Нету такой.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Kavaa пишет:

Обшарил весь форум, 

А документацию производителя читать не пробовали?

ImaSoft
ImaSoft аватар
Offline
Зарегистрирован: 22.09.2015

Пример:

float xval=-12.34;                                           //
  char x[5];                                                   //
  dtostrf(xval, 5/*Полная_длина_строки*/, 1/*Количество_символов_после_запятой*/, x);

 

Kavaa
Offline
Зарегистрирован: 15.06.2017

ImaSoft пишет:

Пример:

float xval=-12.34;                                           //
  char x[5];                                                   //
  dtostrf(xval, 5/*Полная_длина_строки*/, 1/*Количество_символов_после_запятой*/, x);

 

Пример рабочий, большое спасибо, но, Mega почему то конкретно виснит при использовании этой функции. Пытаюсь сделать GPS трекер, который отправляет данные на сервер через GSM модем. И если идет вызов функции dtostrf то GSM модем начинает жутко глючить за счет загрузки Arduino. Как можно решить проблему?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

а ты строку из функции отдаешь?

Kavaa
Offline
Зарегистрирован: 15.06.2017

DetSimen пишет:

а ты строку из функции отдаешь?

Результат функции склеиваю в одну строку Buffer[100] и отправляю Ее. Размер буфера фиксированный с учётом всех параметров. Сервер без проблем все принимает. Однако, если закомментировать функцию перевода вещественных в чар модем перестаёт падать и запросы отправляются очень быстро.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

A Buffer[100] где и как обьявлен?

Kavaa
Offline
Зарегистрирован: 15.06.2017

Глобальная переменная. Очищаю ее после отправки с помощью memset(Buffer, 0, 100);

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

тогда скетч нужен. для разбирания

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Kavaa пишет:

Здравствуйте. Обшарил весь форум, но так решения и не нашел. Кто знает, подскажите пожалуйста, как выполнить наверное даже не преобразование типов, а скорей перевод значения типа float или double в char, таким образом чтобы я мог хранить число, например, 13.485918578 в переменной типа char[] = "13.485918578". Буду очень благодарен.

Если вы хотите хранить float в EEPROM , то вам перевод не нужен. Храните в float

sva_khv
Offline
Зарегистрирован: 19.12.2016

Хозяйке на заметку sprintf при использованиис Arduino  тоже float не переваривает. Целые и символы по формату выводит. Тоже мучился с этим вопросом.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

sva_khv пишет:

sprintf не переваривает ... мучился с этим вопросом.

Наш человек! Какой-нибудь тупой прочитал бы документацию и не мучился бы, но это не наш метод! Мы через мучения смысл жизни познаём :))))

sva_khv
Offline
Зарегистрирован: 19.12.2016

ЕвгенийП пишет:

sva_khv пишет:

sprintf не переваривает ... мучился с этим вопросом.

Наш человек! Какой-нибудь тупой прочитал бы документацию и не мучился бы, но это не наш метод! Мы через мучения смысл жизни познаём :))))

Так я в конце концов и прочитал документацию.)))
Если 25 лет использовал эту функцию и все работало на компе. А тут вдруг не пошло. Целые работает, а с float нет - сперва все перепробовал. Документацию читаем если уж своим умом сообразить не можем )))

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Так я ж и говорю - "не наш метод". Сам тоже напоролся на это дело :)

AVI_crak
Offline
Зарегистрирован: 04.03.2018

Может кому и поможет.

https://bitbucket.org/AVI-crak/sprint