Arduino sprintf float not formatting
我有这个arduino草图,
1 2 3 4 | char temperature[10]; float temp = 10.55; sprintf(temperature,"%f F", temp); Serial.println(temperature); |
温度打印为
1 | ? F |
对如何格式化此浮动有任何想法吗? 我需要它是一个char字符串。
由于某些性能原因,
1 | char *dtostrf(double val, signed char width, unsigned char prec, char *s) |
使用此方法将其转换为C-Style字符串,然后使用sprintf,例如:
1 2 3 4 5 | 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支持未包含在Arduino的
弦类
Arduino有自己的String类。
1 | String value = String(3.14); |
然后,
1 | char *result = value.c_str(); |
字符串类参考,上面的链接
构造String类的实例。有多种版本可以根据不同的数据类型构造字符串(即,将其格式化为字符序列),包括:
- 常量字符串,用双引号引起来(即char数组)
- 单个常量字符,用单引号引起来
- String对象的另一个实例
- 常数整数或长整数
- 一个常数整数或长整数,使用指定的基数
- 整数或长整数变量
- 整数或长整数变量,使用指定的底数
- 浮点数或双精度数,使用指定的小数位数
另一方面,