Conversion Float -> Int

Signaler
-
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
Bonjour,

J'ai un problème de conversion entre un float et un entier.
Je récupère dans un fichier, sous le type float, une valeur décimale, trois chiffres après la virgule
(genre 0.253) que l'on appelle d.
Je voudrais récupérer juste les trois chiffres, sous la forme d'un entier.
J'ai fait :
(int) coef*d
avec coef=1000
mais on me ressort 252.

Après petite enquète, en fait, l'ordi considère 0.2529.. au lieu de 0.253, et donc via la conversion explicite, tronque la partie fractionnaire, et me garde que le 252. Est-ce possible de faire un arrondi supérieur ou un arrondi au plus près avant de faire la conversion explicite ?
Si oui, quelle fonction et quelle librairie à appeler?

Merci d'avance !
DroledeBx

2 réponses

Messages postés
240
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
22 mars 2009

salut

je ne sais pas mais au pire tu fait une multiplication  du nombre par 10000 au lieu de 1000 et tu gères l'arondi toi même ^^

bye
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Il est bien entendu possible de faire tous les types d'arrondi que l'on veut mais ce serait ici totalement contre productif.

Tu recup ton float dans une chaine, tu pousses un pointeur jusque derrière le point, et tu fais direct une conversion sur des entiers.

exemple si tu as récupéré:
char buf[24], *c;
int n;
strcpy(buf, "0.253"); // SIMULE TA RECUP DEPUIS FICHIER
c = buf; // ON PLACE *c DERRIERE LE POINT
while(*c) {
  if(*c++ == '.') break;
}
n = atoi(c);

ciao...
BruNews, MVP VC++