Arondir un float en int

cs_guillaume21 Messages postés 15 Date d'inscription lundi 12 mai 2003 Statut Membre Dernière intervention 7 juin 2004 - 23 mai 2003 à 10:46
cs_ThomasC Messages postés 5 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 9 juillet 2003 - 9 juil. 2003 à 10:00
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

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
23 mai 2003 à 10:49
int res = (int) myfloat;
l'arrondit se fait.
depend quel arrondi tu veux.
BruNews, ciao...
0
cs_payen Messages postés 252 Date d'inscription mercredi 25 octobre 2000 Statut Membre Dernière intervention 1 mai 2005
23 mai 2003 à 11:01
tu as egalement dans math.h (je crois ...) les fonctions ceil() et floor(). je te laisse deviner ce qu'elles font ...
0
cs_guillaume21 Messages postés 15 Date d'inscription lundi 12 mai 2003 Statut Membre Dernière intervention 7 juin 2004
23 mai 2003 à 11:23
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
0
cs_payen Messages postés 252 Date d'inscription mercredi 25 octobre 2000 Statut Membre Dernière intervention 1 mai 2005
23 mai 2003 à 11:29
pour recuperer la partie entiere, tu utilises la methode de Brunews (cast) ou la fonction ceil() ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_payen Messages postés 252 Date d'inscription mercredi 25 octobre 2000 Statut Membre Dernière intervention 1 mai 2005
23 mai 2003 à 11:29
floor pas ceil()!!!
0
cs_ThomasC Messages postés 5 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 9 juillet 2003
9 juil. 2003 à 10:00
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)
0
Rejoignez-nous