conversion float en int

Le
Akeu
Bonjour,
Il me semble qu'il existe une commande pour convertir un flottant en
integer au plus pres car le forcage A=(int) B; ne marche pas
1.2 rend 1
1.7 rend 2
-1.2 rend -1
-1.7 rend -2
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-Marc Bourguet
Le #999400
Akeu
Bonjour,
Il me semble qu'il existe une commande pour convertir un flottant en
integer au plus pres car le forcage A=(int) B; ne marche pas
1.2 rend 1
1.7 rend 2
-1.2 rend -1
-1.7 rend -2


Si tu as des bibliotheques C99:

double round(double);

Sinon utilise floor(x+0.5).

A+

--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Akeu
Le #999399
floor , mais c'est bien sur , j'avais oublié

Le Thu, 20 Sep 2007 13:56:00 +0200, Jean-Marc Bourguet a écrit :

Akeu
Bonjour,
Il me semble qu'il existe une commande pour convertir un flottant en
integer au plus pres car le forcage A=(int) B; ne marche pas 1.2 rend 1
1.7 rend 2
-1.2 rend -1
-1.7 rend -2


Si tu as des bibliotheques C99:

double round(double);




Sinon utilise floor(x+0.5).

A+



Jean-Marc Bourguet
Le #997540
fred

floor , mais c'est bien sur , j'avais oublié
rint ?



Ce que fait rint depend du mode d'arrondi en vigueur.

A+

--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr: http://www.usenet-fr.news.eu.org


Jean-Marc Bourguet
Le #997538
fred

fred

floor , mais c'est bien sur , j'avais oublié
rint ?



Ce que fait rint depend du mode d'arrondi en vigueur.
Et quel est le mode d'arrondi en vigueur en l'occurrence ?

Ça dépend de quoi ?


De ce que le programme a mis avec les fonctions de fenv.h.

A+

--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr: http://www.usenet-fr.news.eu.org




Vincent Lefevre
Le #997217
Dans l'article Jean-Marc Bourguet
Si tu as des bibliotheques C99:

double round(double);

Sinon utilise floor(x+0.5).


Attention, suivant la méthode utilisée, on n'obtient pas la même
chose pour les demi-entiers. Et puis attention aux arrondis:

ay:~> cat tst.c
#include #include int main (void)
{
double x;
for (x = 0.5; x <= 3.5; x += 1.0)
{
double y = nextafter (x, 0.0);
printf ("%-20.17g %g %g %gn",
y, round (y), floor (y + 0.5), rint (y));
printf ("%-20.17g %g %g %gn",
x, round (x), floor (x + 0.5), rint (x));
}
return 0;
}
ay:~> c99 -Wall -O2 tst.c -o tst -lm
ay:~> ./tst
0.49999999999999994 0 1 0
0.5 1 1 0
1.4999999999999998 1 1 1
1.5 2 2 2
2.4999999999999996 2 2 2
2.5 3 3 2
3.4999999999999996 3 3 3
3.5 4 4 4

--
Vincent Lefèvre 100% accessible validated (X)HTML - Blog: Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)

Publicité
Poster une réponse
Anonyme