代码段:
Serial.println(sensorString); //so you can see the captured string
char carray[sensorString.length() + 1]; //determine size of the array
Serial.println(sizeof(carray));
sensorString.toCharArray(carray, sizeof(carray)); //put sensorString into an array
float sensorStringFloat = atoi(carray); //convert the array into an Integer
Serial.println(sensorStringFloat);
Serial.println(sensorStringFloat)打印出5.00而不是正确的浮点值5.33。为什么这样,我该如何解决这个问题?我最终想将sensorStringFloat传递给:
aJson.addNumberToObject(sensor, "ph", sensorStringFloat);
答案 0 :(得分:4)
atoi将ASCII中的数字转换为整数。该行的评论也表示它转换为整数。所以你得到一个整数结果,5。要转换为浮点数,请考虑使用atof。 (注意“f”代表浮点数,而不是“浮点数”。atof返回一个double。)
答案 1 :(得分:1)
你应该传递另一个定义格式的参数,在这种情况下它是浮点后的位数。
Serial.println(sensorString,2);
答案 2 :(得分:0)
String temp = String (_float, 0);
say float x;
使用转换为String
String _temp = String(x, 0);
第二个参数0 ...表示我不想尾随零。
注意:但这仅适用于整数。 这个解决方案不适合说... 1.24 你只会得到1。