Forum: Mikrocontroller und Digitale Elektronik AVR Rechnen mit float, Nackommastelle runden


von Michael (Gast)


Lesenswert?

Hallo zusammen,

ich habe eine Frage zum Rechnen mit floats auf einem AVR. Ich habe eine 
float-Variable, in der z.B. folgendes steht:

float_var= 123.4567

Nun würde ich das gerne runden und zwar so, dass es nur noch eine 
Nachkommastelle gibt und die nur 0 oder 5 sein kann. Der Wert soll also 
quasi mit +/-0.5 angegeben werden.

Gibt es da eine Möglichkeit das irgendwie zu runden?

Grüße
Michael

von Karl H. (kbuchegg)


Lesenswert?

Michael schrieb:

> Gibt es da eine Möglichkeit das irgendwie zu runden?

Falsche Frage.
Richtige Frage: warum rechnest du es überhaupt in float aus und nicht 
gleich als Fixed Point Integer mit 1 Nachkommastelle?

Anstatt in 'float' mit Euro zu rechnen, zb. € 2.80, kann man ja auch in 
Cent rechnen (2 Nachkommastellen) und den Wert als 280 berechnen/sich 
merken. Will man dann unbedingt eine Ausgabe in Euro, dann 'schummelt' 
man eben bei der Ausgabe zwischen die Hunderter und Zehner einen 
Dezimalpunkt ein (Hunderter und Zehner deswegen, weil bekannt ist, dass 
man Fixedpoint mit 2 Nachkommastellen hat), und dann steht auf der 
Anzeige auch wieder 2.80

Also: geh erst mal einen Schritt weiter und frag dich, warum du da 
eigentlich float haben willst.

von Peter II (Gast)


Lesenswert?

Michael schrieb:
> Gibt es da eine Möglichkeit das irgendwie zu runden?

x = round(float_var*2)/2;

von Michael (Gast)


Lesenswert?

Hallo,

zum Test habe ich erst einmal die version von Peter II verwendet. Das 
funktioneirt auch soweit.

Im nächsten Schritt werde ich mir wirklich überlegen, ob ich nicht 
versuche, die float außen vor zu lasssen.

Vielen Dank!

Grüße
Michael

von Falk B. (falk)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.