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.33 の正しい float 値ではなく、5.00 を出力します。これはなぜですか? また、この問題を解決するにはどうすればよいですか? 最終的には、sensorStringFloat を次の場所に渡したいと思います。

aJson.addNumberToObject(sensor, "ph", sensorStringFloat);
4

3 に答える 3

4

atoi は ASCII の数値を整数に変換します。その行のコメントには、整数に変換されるとも書かれています。したがって、整数の結果 5 が得られました。浮動小数点に変換するには、atof の使用を検討してください。(「f」は「float」ではなく浮動小数点数を表すことに注意してください。atof は double を返します。)

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

2 番目のパラメーター 0... は、末尾のゼロが不要であることを示しています。

注意: ただし、これは整数にのみ適しています。この解決策は、たとえば... 1.24には機能しません。1つしか得られません。

于 2016-01-09T03:59:34.137 に答える