Forum: Mikrocontroller und Digitale Elektronik AVR float formatieren


von Nilix N. (nilix)


Lesenswert?

Hallo

Ich hab mal ne frage vielleicht hat jemand rat.

folgender Programmabschnitt in dem Wenn Wert 5-er Schritte macht in Actf 
übernommen werden soll. 0.000,0.005,0.010,0.0015,0.0020,0.0025 etc.
Soweit funktioniert das auch, wenn aber der Wert einen grossen Sprung 
macht und auf einem wert stehen bleibt der kein 5-er Schritt ist wird 
die Variable Actf nicht aktualisiert, soll sie aber.

Wie kann ich den Wert auf 5-er Schritt Formatieren.

float Actf,Wert;

if(Wert %5 == 0)  Actf=Wert;

Danke vorab.

von Hmm (Gast)


Lesenswert?

Bin nicht sicher ob ich Deinen (etwas sehr ungrammtikalisch 
formulierten) Text verstehe. Meinst Du sowas?
1
// if(Wert %5 == 0)  Actf=Wert;
2
Actf = Wert - (Wert % 5);

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Nilix Nilix schrieb:
> float Actf,Wert;
>
> if(Wert %5 == 0)  Actf=Wert;

Hallo nilix,

damit tust du dich viel leichter:
http://www.mikrocontroller.net/articles/Festkommaarithmetik

Der Operator % (modulo) funktioniert wahrscheinlich gar nicht mit dem 
Datentypen "float", das heißt, die Zahlen werden sowieso zuerst 
automatisch in "int" umgewandelt.

von Hmm (Gast)


Lesenswert?

Grrr. Während ich geantwort habe, hast Du Deine Frage geändert. Mach 
alleine weiter.

von Hmm (Gast)


Lesenswert?

Abgesehen davon, das der Codeteil den Du gezeigt hast mit den Beispielen 
NIE funktioniert haben kann weil Float. Was soll den die Sch... verdammt 
nochmal?

von Nilix N. (nilix)


Lesenswert?

>Actf = Wert - (Wert % 5);

Vielen Dank für die sehr schnelle Antwort, scheint zu funktionieren
und Entschuldige ich hab nur die Frage etwas angepasst 0.00x.
Du warst halt schneller als ich.

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.