web-dev-qa-db-fra.com

C convertir la virgule flottante en int

J'utiliseC(pas C++).

J'ai besoin de convertir un nombre flottant en une int

13
SergSoftwares
my_var = (int)my_var;

Aussi simple que cela. En gros, vous n'en avez pas besoin si la variable est int.

23
Zach P

Utilisation en C

int C = var_in_float;

Ils vont convertir implicitement

Je vous remercie

5
user3161739

Si vous voulez l'arrondir, vous pouvez créer une petite fonction ou définir comme ceci:

#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;

Attention, vous devez idéalement vérifier que le flottant se situe entre INT_MIN et INT_MAX avant de le lancer.

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

Utiliser (int) pour convertir double en int ne semble pas sûr

Vous pouvez trouver plus d'informations à ce sujet ici: Convertir double en int?

1
Legu