Falsch.
Genau da haut es Dir die Füße weg.
Du schreibst einen float in die Datenbank.
Du kannst jetzt Kosmetik betreiben und die Nachkommastellen auf 2 begrenzen... Also das Feld begrenzen.
Ist aber - meiner bescheidenen Meinung nach - nicht die Lösung.
Das DB-Feld muss die Anzahl der Impulse aufnehmen. Ohne Umrechnung. Denn genau durch diese Umrechnung kommt es zu den von Dir genannten Ungenauigkeiten.
Du hast einen 1stelligen Wert. Den addiere.
Nur zur Ausgabe auf dem Display / Web dividiere durch 100.0
Mache ich seit Jahren so. Und ich kann keine Abweichung feststellen.
Die Ausgabe auf einem Webserver ist bei mir so eingerichtet:
for (uint8_t i = 0; i < 8; i++)
{
client.print("Zähler: ");
//client.print(i);
//client.print(" ");
client.print(bezeichner[i]);
client.print(" ist ");
client.print(zaehlerScore[i]);
client.print(" / ");
if (i < 8 && i > 3)
{
client.print(zaehlerScore[i] / 90);
client.print(" Liter");
}
else if (i == 3)
{
client.print(zaehlerScore[i] / 100.0, 2);
client.print(" m³");
}
client.print("<br />");
und bringt für den Gaszähler:
- Mein Verbrauch seit Mitternacht
