Forum: Compiler & IDEs Runden von float?


von tobiTob (Gast)


Lesenswert?

Hi,

wie bekomme ich den Vorkommaanteil und den Nachkommaanteil eines Float 
Wertes?

Ich habe keine Funktion wie "Round" gefunden.
Nun wollte ich mir diese eben schreiben...

Wenn Nachkomma >0,5 dann Vorkomma + 1

Aus 12,5 soll 13,0 werden, aus 12,4 dann 12,0



Hat jemand eine Idee?

Gruß Tobi...

von Benedikt K. (benedikt)


Lesenswert?

int vorkammazahl;
vorkommazahl=floatwert+0.5;

Das sollte genau das gewünschte Ergebnis liefern.

von Rolf Magnus (Gast)


Lesenswert?

Aber auch nur, wenn der Wert positiv ist.

von Benedikt K. (benedikt)


Lesenswert?

Stimmt, die negative Zahlen übersehe ich immer.
int vorkammazahl;
if (floatwert>=0)
  vorkommazahl=floatwert+0.5;
else
  vorkommazahl=floatwert-0.5;

von yalu (Gast)


Lesenswert?

In C99 gibt es folgende 21 Rundungsfunktionen:

  {{,l,ll}{rint,round},nearbyint}{,f,l}

Sie unterscheiden sich in den Datentypen des Arguments und des
Ergebnisses, der Art und Weise, wie ein Nachkommaanteil von exakt 0,5
gerundet wird und ob ggf. eine inexact Exception ausgelöst wird.

von kaplan (Gast)


Lesenswert?

es gibt auch noch eine Funktion floor();
die schneidet einfach die nachkommastellen ab
zumindest in C++...
gruß

von Chris (Gast)


Lesenswert?

> die schneidet einfach die nachkommastellen ab
> zumindest in C++...

Fast. floor() rundet stets "abwärts". Für negative Zahlen ist das nicht 
mehr mit dem einfachen Abschneiden des Nachkommateils identisch.

von FBI (Gast)


Lesenswert?

Und als Gegenstück zu floor() gibts dann noch ceil().
Da wird immer "aufwärts" gerundet.

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.