Arduino sprintf float не форматирует

У меня есть этот эскиз arduino,

char temperature[10]; float temp = 10.55; sprintf(temperature,"%f F", temp); Serial.println(temperature); 

температура печатается как

 ? F 

Любые мысли о том, как отформатировать этот float? Мне нужно, чтобы это была строка символов.

Из-за некоторых причин производительности %f не входит в реализацию Arduino’s sprintf() . Лучшим вариантом было бы использовать dtostrf() – вы конвертируете значение с плавающей запятой в строку C-стиля, подпись метода выглядит так:

 char *dtostrf(double val, signed char width, unsigned char prec, char *s) 

Используйте этот метод для преобразования его в строку C-Style, а затем используйте sprintf, например:

 char str_temp[6]; /* 4 is mininum width, 2 is precision; float value is copied onto str_temp*/ dtostrf(temp, 4, 2, str_temp); sprintf(temperature,"%s F", str_temp); 

Вы можете изменить минимальную ширину и точность в соответствии с плавающей точкой, которую вы конвертируете.

Как уже было сказано, поддержка Float не включена в sprintf на Arduino.

Класс строк

У Arduino есть свой собственный class String .

 String value = String(3.14); 

тогда,

 char *result = value.c_str(); 

Ссылка на class String, ссылка выше

Создает экземпляр classа String. Существует несколько версий, которые строят строки из разных типов данных (т. Е. Форматируют их как последовательности символов), в том числе:

  • постоянная строка символов, в двойных кавычках (т. е. массив символов)
  • один постоянный символ, в одинарных кавычках
  • другой экземпляр объекта String
  • постоянное целое или длинное целое число
  • постоянное целое или длинное целое число, используя указанную базу
  • целочисленная или длинная целочисленная переменная
  • целочисленную или длинную целую переменную, используя указанную базу
  • float или double, с использованием заданных десятичных знаков
  • смешение cout и printf для более быстрого вывода
  • Каков аргумент для printf, который форматирует длинные?
  • Почему printf не сбрасывается после вызова, если в строке формата не указана новая строка?
  • Номер формата как фиксированная ширина, с ведущими нулями
  • Как форматировать строки, используя printf (), чтобы получить равную длину в выходе?
  • Код для функции printf в C
  • Почему printf () продвигает float в double?
  • printf ("% d% d% d \ n", ++ a, a ++, a) output
  • Как избежать знака% (процента) в printf C?
  • Есть ли веская причина использовать «printf» вместо «print» в java?
  • Как передать переменное количество аргументов printf / sprintf
  • Давайте будем гением компьютера.