Arduino, 3 Nachkommastellen?
Ist es möglich irgendwie mehr als 2 Nachkommastellen zu haben? Weil bei float gibt es nur 2 Nachkommastellen aber ich bräuchte drei
Gibt es so einen Datentypen? Oder eine andere möglichkeit?
3 Antworten
Float hat mehr als 2 Nachkommastellen. Benutzt du die String() Methode um den Float auszugeben? Da kannst du als zweiten Parameter angeben wie viele Stellen der String haben soll. Standardmäßig sind das zwei.
So führt:
float val = 0.123456;
String stringVal = String(val,3);
das im String am Ende „0.123“ steht.
Macht man eine float direkt in die print Funktion wird auch Standardmäßig gerundet, wenn man da aber direkt mit String() in der Print Methode arbeitet kann man das besser steuern.
Da float aber ja nur 32Bit ist geht die Genauigkeit so bis 6-7 Dezimalstellen.
Bei den Worten genau und Fließkomma sollte man vorsichtig sein. Hier mal ein kleines Infovideo:
Man kann bei der Ausgabe einfach sagen man will X Stellen haben.
Serial.println(String(variable,10));
Gerundet wird nur wenn man einen String oder so draus macht. Ansonsten bleibt es bei den vollen 32Bit
Float kann eig mehr Nachkommastellen. Double wäre aber der entsprechende Datentyp mit doppelter Genauigkeit.
Bist du dir sicher das die anderen Nachkommastellen nicht beim ausgegeben abgeschnitten werden. Hier ist ein Beispiel bei bei printf die Nachkommastellen konfigurierst. https://stackoverflow.com/questions/8345581/c-printf-a-float-value#8345605
Das könnte weiter helfen:
Danke👍 ja ich habe einen Printbefehl das ist wohl das problem
Aber wie genau kann ich denn das dann machen? Wenn ich zum Beispiel eine Berechnung habe und dann ein genaues Resultat will? Also z.B 1/10000 rechnen und printen sodass es nicht auf null gerundet wird?