Forum: PC-Programmierung Abrunden einer float zahl in c


von C-Noob (Gast)


Lesenswert?

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

von Markus M. (mark_m)


Lesenswert?

Benötigst du das Runden im Programm oder für nur für die Ausgabe?

Grüsse

von Leon W. (leon)


Lesenswert?

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..

von Markus M. (mark_m)


Lesenswert?

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

von Leon W. (leon)


Lesenswert?

Stimmt, übersehen.

von Stefan E. (sternst)


Lesenswert?

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? ;-)

von mar IO (Gast)


Lesenswert?

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.

von mar IO (Gast)


Lesenswert?

mar IO schrieb:
> - floo()

floor()

von Rolf M. (rmagnus)


Lesenswert?

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?

von Marwin (Gast)


Lesenswert?

floats sind Hexadezimalbrueche, die kannst du nicht auf eine bestimmte 
Anzahl Dezimalstellen runden. Dafuer musst du sie erst in ein passendes 
Zahlenformat konvertieren.

von Mr. Tom (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.