Hey, ich will eine float zahl in c auf "s" stellen aufrunden, wobei ich dies innerhalb eines Makros in einer Zeile schreiben will. Hat jemand eine Idee? Danke schonmal
Benötigst du das Runden im Programm oder für nur für die Ausgabe? Grüsse
1 | float c; |
2 | ....
|
3 | c=(float)((int64_t)(c*10^s)/10^s) |
wäre so ein spontaner Einfall, zwar nicht schön, aber naja..
Der Wert unter dem Bruchstrich muss noch nach float/double gescasted werden. Sonst gibt es nur eine Integer Division und du hast gar keine Nachkommastellen mehr. Grüsse
Leon W. schrieb: > float c; > .... > c=(float)((int64_t)(c*10^s)/10^s) > wäre so ein spontaner Einfall, zwar nicht schön, aber naja.. Runden per XOR? ;-)
Guckst Du: - ceil() - floo() Hier wird auf Ganzzahlen gerundet. In diesem Fall müsstest Du zuerst die Zahl größer skalieren, dann runden und zum Ende wieder runter skalieren.
C-Noob schrieb: > Abrunden einer float zahl in c > ich will eine float zahl in c auf "s" stellen aufrunden, Was denn nun? Auf- oder abrunden?
floats sind Hexadezimalbrueche, die kannst du nicht auf eine bestimmte Anzahl Dezimalstellen runden. Dafuer musst du sie erst in ein passendes Zahlenformat konvertieren.
Marwin schrieb: > floats sind Hexadezimalbrueche, die kannst du nicht auf eine bestimmte > Anzahl Dezimalstellen runden. Eigentlich Binärbrüche, i.e. Rationale Zahlen, bei denen der Nenner eine 2er-Potenz ist.
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.