Hi muss zwei Zahlen von eineander abziehen und durch eine dritte teilen. ???((Szene1 - Szene2) / Anzahl); darf aber nur eine ganze Zahl wieder bekommen, weis jemand wie der runden Befehl in C heist. Gruss Ansgar
Wenn dein Ergebnis eine Ganzzahlvariable ist, wird das automatisch erledigt. Beim casten wird immer abgerundet. Oder genauer gesagt: Die Nachkommastellen werden einfach abgeschnitten.
Wenn du die Variable in die das Ergebnis hineingeschrieben wird 8bit zuweist dann wird diese immer eine ganze Zahl :) Quasi:
1 | uint8_t Ergebnis; |
2 | Ergebnis = ((Szene1 - Szene2) / Anzahl); |
Gruß,
Wenn Du in Integer rechnest brauchst Du nichts zu runden...
1 | int MeineFunktion(int Szene1, Szene2, Anzahl); |
2 | {
|
3 | int Ergebnis; |
4 | Ergebnis = ((Szene1 - Szene2) / Anzahl); |
5 | return(ergebnis) |
6 | }
|
@Chrisiiiii: Klar, aber wenn der Wert nicht in 8 Bit passt, gibts Probleme. Der OP müsste schon erzählen, was er denn da für Zahlen hat.
@Ansgar: Soll tatsächlich nur abgerundet werden, oder soll es eine korrekte Rundung sein? Und welche Typen haben Deine Ausgangswerte?
brauche eine krekte Rundung also ab 0,5 muss das 1 ergeben habe als DatenTyp bislang char da ein genzes Feld gerundet werden soll und ich nicht viel Speicher über habe
Ansgar wrote:
> also ab 0,5 muss das 1 ergeben
dann wirst Du wohl noch 0,49999 drauf addieren müssen...
Jörg B. wrote: > Ansgar wrote: >> also ab 0,5 muss das 1 ergeben > dann wirst Du wohl noch 0,49999 drauf addieren müssen... In int kann man keine 0,49999 addieren, da muß man so runden: c = (a + b/2) / b; Peter
da bei der Gleichung vom Peter zweimal gerundet wird, besser: c = (2 * a + b) / (2 * b);
aber ich komme mit den Formel doch nicht auf eine gerundete ganze Zahl?? ((2*(10-5)+1)/10)/2 =0,55 (10 - 5) / 10 = 0,5 soll mir aber eine 1 liefern
1 | Ergebnis = (Szene1 - Szene2) / (Anzahl / 2); |
2 | Ergebnis = Ergebnis / 2 + Ergebnis % 2; |
Das sollte das tun, was Du vorhast. Geht so allerdings auch nur mit positiven Zahlen.
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.