В стандартной библиотеке Arduino есть функция, которая называется dtostrf()
. Я думаю об этом как «Десятичное число в строку». Вы передаете число с плавающей запятой, какой ширины вы хотите, чтобы было целое число (если оно будет соответствовать), количество десятичных знаков точности - и буфер, который вы хотите заполнить.
Обратите внимание, что! Вы должны предоставить буфер, и вы должны быть осторожны, чтобы предоставить более чем достаточно! Не забудьте также добавить 1 (чтобы сохранить символ NUL в конце):
char result[8]; // Buffer big enough for 7-character float
dtostrf(resistance, 6, 2, result); // Leave room for too large numbers!
Это даст result
значения как " 1.23"
и " -1.23"
и "123456789"
(без кавычек). Обратите внимание на последний пример - он не будет усекать число, если оно слишком большое, и этот 10- символьный result
(не забудьте последний NUL
) просто переполнил ваш буфер ...
Кстати, если вы укажете отрицательную ширину, он не будет выравнивать по правому краю ответ, он будет выравнивать по левому краю (ставьте любые пробелы в конце вместо начала).