0

代码片段:

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);
4

3 回答 3

4

atoi 将 ASCII 中的数字转换为整数。该行的注释还说它转换为整数。所以你得到了一个整数结果,5。要转换为浮点数,请考虑使用 atof。(请注意,“f”代表浮点,而不是“float”。atof 返回一个双精度值。)

于 2012-07-03T12:56:35.520 回答
1

您应该传递另一个定义格式的参数,在这种情况下,它是浮点数之后的位数。

Serial.println(sensorString,2);
于 2012-07-03T12:47:19.097 回答
0

String temp = String (_float, 0);

say float x;

使用转换为字符串 String _temp = String(x, 0);

第二个参数 0... 表示我不想要尾随零。

注意:但是这仅适用于整数。此解决方案不适用于... 1.24 你只会得到 1。

于 2016-01-09T03:59:34.137 回答