Arduino sprintf float не форматирует
У меня есть этот эскиз arduino,
char temperature[10]; float temp = 10.55; sprintf(temperature,"%f F", temp); Serial.println(temperature);
температура печатается как
? F
Любые мысли о том, как отформатировать этот float? Мне нужно, чтобы это была строка символов.
- sprintf () с автоматическим распределением памяти?
- printf ("% d% d% d \ n", ++ a, a ++, a) output
- Что происходит с «% n» Java в printf?
- Как форматировать строки, используя printf (), чтобы получить равную длину в выходе?
- Как распечатать адрес памяти в C
- Передача слишком большого количества аргументов printf
- Как повторить символ с использованием printf?
- Почему #include не требуется использовать printf ()?
- вызов printf с помощью va_list
- Какой примитивный тип данных - time_t?
- printf Недостаточные аргументы
- Каков аргумент для printf, который форматирует длинные?
- найти недостаток вариант -printf, теперь что?
Из-за некоторых причин производительности %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, с использованием заданных десятичных знаков