Integerteil eines Floats

tommy07

Mitglied
Hallo,
bin gerade wieder auf heftigen Widerstand gestoßen. Wie mache es, dass von einem float nur der integer-Teil verwendet wird?

Beispiel:

aus 3.45 soll werden 3

Ich hab da was mit Modulo versucht, aber es wird eine "Unzuverlässige Verwendung einer Fließkommazahl" angezeigt.

Könnt ihr mir helfen?

cu tommy
 
moin


Ja es wird immer abgerundet bzw. das hinterm Komma wird einfach weggelassen.

Wenn du den Code so abänderst:
Code:
int i;
float f = 3.45;

i = (int)f + 0.5;
Also immer erst Plus 0,5 rechnest,
wird ab .5 aufgerundet und bis .49999 abgerundet.


mfg
umbrasaxum
 
Code:
i = (int)(f + 0.5);
damit erst inkrementiert wird und dann erst abgeschnitten, Achtung bei negeativen Zahlen !
 
umbrasaxum hat gesagt.:
moin


Ja es wird immer abgerundet bzw. das hinterm Komma wird einfach weggelassen.

Wenn du den Code so abänderst:
Code:
int i;
float f = 3.45;

i = (int)f + 0.5;
Also immer erst Plus 0,5 rechnest,
wird ab .5 aufgerundet und bis .49999 abgerundet.
mfg
umbrasaxum

Wenn die Zahl f im Wertebereich eines Integers liegt sollte das so gehen, aber wenn
sie nicht mehr drin liegt hast du ein Problem

http://www.cplusplus.com/ref/cmath/floor.html sollte da Abhilfe schaffen...

Gruß

RedWing
 
float und int haben doch beide 4byte. Warum hat dann float einen größeren Wertebereich?
Die Nachkommastellen müssen ja auch irgendwo gespeichert werden. :confused:
 
Zurück