float ~ int(float runden in int)

fireflyhope

Mitglied
wie kann ich mein float abrunden in ein integer

Bsp.:
float = 2.34
soll das werden:
int = 2

oder
float = 2.54
soll das werden:
int = 3
(ich denke der rescht is klar)
 
Du meinst wohl korrekt runden, Abrunden macht er immer automatisch beim casten.
Also, hier ein beispiel:
C:
int x=3,4; 
double y; 
y= static_cast(x+0.5;
Das 0.5 ist wichtig, weil er standartmäßig einfach die Nachkommastellen abschneidet.
Die Lösungen weiter unten sind natürlich schöner...:D
 
Vorschlag :

1 .erhöhe die Zahl um 0.5
2 .wandle per (int) die Zahl um, und lass den Compiler runden


Beispiel
C:
float x = 4.6436;
x+= 0.5;
 
int result = (int)x;
dann sollte in result die 5 sein. Anders herum geht das natürlich auch.

also bei 3.213 + 0.5 wird er auf 3 abschneiden. Dann solltest du genau das haben was du wolltest.
 
Für negative Zahen muss man in diesem Fall 0.5 abziehen, dammit das kaufmännische Runder mit (int) funktioniert
 
Erschreckend, dass die einfachste Möglichkeit noch nicht genannt wurde:
C:
#include <math.h>
…
float f;
int i = roundf(f);
Einzige Voraussetzung ist eine C99-kompatible Standardbibliothek. Vorsicht: beim impliziten Cast von float auf int kann es zum Überlauf kommen.

Grüße,
Matthias
 

Neue Beiträge

Zurück