私はこのアルドゥイノのスケッチを持っています、
char temperature[10];
float temp = 10.55;
sprintf(temperature,"%f F", temp);
Serial.println(temperature);
温度は
? F
このフロートをフォーマットする方法についての考えはありますか?文字列にする必要があります。
いくつかのパフォーマンス上の理由により、_%f
_はsprintf()
のArduinoの実装に含まれていません。より良いオプションはdtostrf()
を使用することです-浮動小数点値をCスタイルの文字列に変換します。メソッドのシグネチャは次のようになります:
_char *dtostrf(double val, signed char width, unsigned char prec, char *s)
_
このメソッドを使用してCスタイルの文字列に変換し、sprintfを使用します。例:
_char str_temp[6];
/* 4 is mininum width, 2 is precision; float value is copied onto str_temp*/
dtostrf(temp, 4, 2, str_temp);
sprintf(temperature,"%s F", str_temp);
_
変換するフロートに合わせて、最小の幅と精度を変更できます。
前に述べたように、FloatサポートはArduinoのsprintf
に含まれていません。
Arduinoには、独自の String クラスがあります。
String value = String(3.14);
その後、
char *result = value.c_str();
Stringクラスのインスタンスを構築します。さまざまなデータ型から文字列を構築する(つまり、文字列としてフォーマットする)複数のバージョンがあります。