Arduino问题:String to float添加两个零而不是正确的整数

时间:2012-07-03 02:43:59

标签: string floating-point arduino

代码段:

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

3 个答案:

答案 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。