Conversion Float -> Int

Utilisateur anonyme - 23 déc. 2007 à 11:49
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 23 déc. 2007 à 14:01
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

cs_omnia Messages postés 240 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 22 mars 2009
23 déc. 2007 à 12:32
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
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
23 déc. 2007 à 14:01
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++
0
Rejoignez-nous