我在arduino中使用snprintf将浮动字符打印到字符*。由于存在一些错误,我目前在阅读实际价值时遇到问题,但这不是实际问题。我得到的字符串只是包含"?"。我想知道这是NaN还是INF?
示例:
char temp[100];
float f; //This float is initialised on some value, but i'm currently not really sure what this value is, but for example 1.23
f = 1.23
snprintf(temp, 100, "%f", f);
temp现在只包含"?"。
答案 0 :(得分:5)
Arduino的snprintf实现没有浮点支持。不得不改为使用dtostrf(http://www.nongnu.org/avr-libc/user-manual/group__avr__stdlib.html#ga060c998e77fb5fc0d3168b3ce8771d42)。
所以不要这样做:
char temp[100];
float f;
f = 1.23;
snprintf(temp, 100, "%f", f);
使用Arduino我必须这样做:
char temp[100];
float f;
f = 1.23;
dtostrf(f , 2, 2, temp); //first 2 is the width including the . (1.) and the 2nd 2 is the precision (.23)
这些家伙在avrfreaks论坛上发现了这一点:http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=119915
答案 1 :(得分:-3)
考虑你的意思
char temp[100];
float f;
f = 1.23;
snprintf(temp, 100, "%f", f);
它按预期工作。