Answers:
标准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
)只是溢出了缓冲区...
顺便说一句,如果您指定负宽度,它将不会使答案右对齐,而会使其左对齐(在末尾而不是开始处留空格)。
基本上,您尝试将4字节变量(浮点数)转换为4字节字符串(char变量为1字节大小)。有关Arduino数据类型的更多信息,请参见http://playground.arduino.cc/Code/DatatypePractices
您可以尝试以下问题的答案 /programming/18270974/how-to-convert-a-float-to-a-4-byte-char-in-c
/programming/24420246/c-function-to-convert-float-to-byte-array
我承认const char * result = "";
您在示例中的使用使我感到困惑。
“ const”关键字将变量设置为“只读”,因此您不能对其进行修改。 https://www.arduino.cc/en/Reference/Const
编辑:不幸的是我现在没有Arduino设备来测试上述解决方案
const
关键字并没有把这些变量为只读。这里的变量是一个指针,并且不必是常量。该const
关键字资格被指向的数据,而不是指针本身。换句话说,不允许您通过该指针修改字符串。如果您想要一个常量指针,则将其声明为char * const result
(或const char * const result
如果您想要一个const
指向const
数据的指针)。