Arondir un float en int

Signaler
Messages postés
15
Date d'inscription
lundi 12 mai 2003
Statut
Membre
Dernière intervention
7 juin 2004
-
Messages postés
5
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
9 juillet 2003
-
je voudrai convertir un float en int (le cast tronque mais n'arrondi pas) sans utiliser la "bidouille" :

inr i;
float f;
char car[6];

sprintf(car,"%6.0f",f);
i=atoi(carI);

quelq'un pourrait m'aider ?

merci

6 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
26
int res = (int) myfloat;
l'arrondit se fait.
depend quel arrondi tu veux.
BruNews, ciao...
Messages postés
252
Date d'inscription
mercredi 25 octobre 2000
Statut
Membre
Dernière intervention
1 mai 2005

tu as egalement dans math.h (je crois ...) les fonctions ceil() et floor(). je te laisse deviner ce qu'elles font ...
Messages postés
15
Date d'inscription
lundi 12 mai 2003
Statut
Membre
Dernière intervention
7 juin 2004

j'ai bien compris ce ke font ces fonctions mais je voudrais que l'arrondi se fasse tout seul par exemple 8.5 => 8 et 8.51=> 9.

en fait une fonction qui arrondi à l'entier le plus proche... si je pouvais recuperer la partie entiere du float ça m'aiderait lol
Messages postés
252
Date d'inscription
mercredi 25 octobre 2000
Statut
Membre
Dernière intervention
1 mai 2005

pour recuperer la partie entiere, tu utilises la methode de Brunews (cast) ou la fonction ceil() ...
Messages postés
252
Date d'inscription
mercredi 25 octobre 2000
Statut
Membre
Dernière intervention
1 mai 2005

floor pas ceil()!!!
Messages postés
5
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
9 juillet 2003

personnellement, j'ajoute 0.5;

int arrondie(float f)
{
int i;

if (f>0) i=(int)(f+0.5);
if (f<0) i=(int)(f-0.5);
return i;
}

si tu sais que tu as que des chiffres positifs, tu peus simplifier
(sur un PC un addition en float est fait en 1 instructions assembleur)