it-swarm.com.de

C konvertiere Gleitpunkt in int

Ich verwendeC(nicht C++).

Ich muss eine Float-Nummer in eine int

13
SergSoftwares
my_var = (int)my_var;

So einfach ist das. Grundsätzlich brauchen Sie es nicht, wenn die Variable int ist.

23
Zach P

Verwendung in C

int C = var_in_float;

Sie werden implizit konvertieren

Vielen Dank

5
user3161739

Wenn Sie es abrunden möchten, können Sie eine kleine Funktion oder eine solche Definition erstellen:

#define FLOAT_TO_INT(x) ((x)>=0?(int)((x)+0.5):(int)((x)-0.5))

float my_float = 42.8f;
int my_int;
my_int = (int)my_float;          // => my_int=42;
my_int = FLOAT_TO_INT(my_float); // => my_int=43;

Seien Sie vorsichtig, im Idealfall sollten Sie sich vergewissern, dass sich Float zwischen INT_MIN und INT_MAX befindet, bevor Sie den Cast ausführen.

3
AdriZ
double a = 100.3;
printf("%f %d\n", a, (int)(a* 10.0));

Output Cygwin 100.3 1003
Output MinGW: 100.3 1002

Die Verwendung von (int) zum Konvertieren von double in int scheint nicht ausfallsicher zu sein

Mehr dazu finden Sie hier: Konvertiere Double in Int?

1
Legu