Hallo zusammen,
wird in diesem Fall gerundet oder werden nur die Kommastellen entfernt?
Gruß
Fred
Hallo zusammen,
wird in diesem Fall gerundet oder werden nur die Kommastellen entfernt?
Gruß
Fred
Hi
Versuch's doch aus und sage uns, was Du herausgefunden hast.
Bauchgefühl: Kommastellen werden abgeschnitten (ist einfacher, als Runden)
MfG
Welcher MC? Auf arduino ist standardmäßig die Unterstützung für float in sprintf nicht enthalten.
Gruß Tommy
Der BME280 ist nicht im Haus, dass ich schnell mal mit Serial.print() testen könnte.
Das ganze Zeugs mit ESP32 & Co. läuft gerade super stabil und ich will unbedingt die 49 Tage Grenze der millis() überschreiten, um zu sehen was die runtime() von fipsok (wie in seiner Zeitschaltuhr) dann liefert.
Der Luftdruck wird als float vom Sensor geliefert.
float BME280::readPressure() {
.....
p = ((p + var1 + var2) >> 8) + (((int64_t)_bme280_calib.dig_P7)<<4);
return (float)p/256;
}
}
Wer braucht schon den Luftdruck als float außer Wetterdienst, Luft- und Raumfahrt...
Für eine Heim-Wetterstation reicht auch ein unsigned int.
Ahhh, einen hab ich noch (am Raspi). Dann muss der halt dran glauben.
@Tommy56
ESP32
Was hindert Dich daran es einfach mit einer festen Eingabe zu testen?
Serial.printf("%.02f",123.4567);
Gruß Tommy
Der BME280 ist nicht im Haus, dass ich schnell mal mit Serial.print() testen könnte.
brauchst ja auch gar keinen BME dazu.
Definier dir ein float, gib ihm einen Wert,
druck in über sprintf aus und schau, was du als Ergebnis bekommst.
oder kurz so - wie Tommy sagt ![]()
Danke Leute,
warum mache ich nur immer Alles so kompliziert?
float h = 1.654;
char buff[8];
sprintf(buff, "%.2f", h);
Serial.println(buff);
sprintf(buff, "%.1f", h);
Serial.println(buff);
sprintf(buff, "%.0f", h);
Serial.println(buff);
Ausgabe:
1.65
1.7
2
...also rundet sprintf()
Das wollte ich wissen. Danke für den Wink mit dem Zaunpfahl ![]()
Hi
Ebenfalls ein Danke von mir - hätte ich nicht erwartet!
MfG
Der Teensy 3.2 macht das auch so:
1.65
1.7
2
UNO (Quelle):
float h = 1.654;
char str[50];
strcpy(str, "String value using dtostrf: ");
dtostrf(h, 2, 2, &str[strlen(str)]);
Serial.println(str);
strcpy(str, "String value using dtostrf: ");
dtostrf(h, 2, 1, &str[strlen(str)]);
Serial.println(str);
strcpy(str, "String value using dtostrf: ");
dtostrf(h, 2, 0, &str[strlen(str)]);
Serial.println(str);
String value using dtostrf: 1.65
String value using dtostrf: 1.7
String value using dtostrf: 2