Hallo, ich würde gerne eine Float in die erste Stelle vor dem Komma und nach dem Komma zerlegen. Der Floatwert kann niemals größer als 9 werden. Jetzt hab ich mir folgendes überlegt um die jeweils erste Stelle zu bekommen: durchschnitt=gesamtpins/wuerfe; vorkomma=(int)durchschnitt; durchschnitt=durchschnitt-vorkomma; durchschnitt=durchschnitt*10; nachkomma=(int)durchschnitt; Leider funktioniert das nur für die Vorkommastelle, nicht für die Nachkommastelle. Wo liegt mein Denkfehler? Oder bin ich auf irgendwas beim GCC reingefallen? Das ganze soll auf einem ATMEGA8515 laufen. Danke schonmal :-)
Probiere mal folgendes (nicht getestet):
1 | durchschnitt=durchschnitt-(float)vorkomma; |
2 | durchschnitt=durchschnitt*10.0; |
Nimm Standardfunktionen wie frexp oder ldexp. 1) Bahandle Sonderfälle wie INF, NaN, etc. 2) Zerlege die Zahl in Mantisse und Exponent, z.B. mit frexp. 3) Konvertiere die (normierte) Mantisse in einem int. Dazu verwendet man die Signatur die du kennen musst und Funktionen wie ldexp.
sehe auch kein Fehler, debugge es doch einfach. Dann sieht du in jedem Schritt was los ist. es gibt dafür auch eine Funktion http://en.cppreference.com/w/c/numeric/math/modf
Das Problem scheint bei der Berechnung zu liegen gesamtpins und wuerfe sind jeweils uint_16t und durchschnitt float. Dabei scheint irgendwas schief zu gehen, aber was?
Johannes schrieb: > gesamtpins und wuerfe sind jeweils uint_16t und durchschnitt float. dann wird die Rechnung in int gemacht!
1 | durchschnitt=(float)gesamtpins/wuerfe; |
sollte da helfen, aus dem Grund ist es immer Sinnvoll vollständigen code zu posten.
Peter II schrieb: > Johannes schrieb: >> gesamtpins und wuerfe sind jeweils uint_16t und durchschnitt float. > > dann wird die Rechnung in int gemacht! > durchschnitt=(float)gesamtpins/wuerfe; > > sollte da helfen, aus dem Grund ist es immer Sinnvoll vollständigen code > zu posten. Super Danke das wars! Und wieder was dazugelernt :-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.