Problème de transtypage

Résolu
milie_k33 Messages postés 4 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 17 mai 2005 - 17 mai 2005 à 10:53
milie_k33 Messages postés 4 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 17 mai 2005 - 17 mai 2005 à 13:11
Bonjour,

Je suis actuellement sur la création d'un programme en C où je calcule de des doubles assez grands. Mon problème arrive quand je souhaite transtyper ce double en int (donc prendre la partie entière). Il se trouve que lorsque mon double est un nombre avec une virgule (genre 917,0025635), mon transtypage ne marche (il me resoort un truc énorme explose le tableau dans lequel je le met).
J'ai essayé du transtypage bête et méchant avec des doubles ou des float. J'ai essayé d'utiliser ceil ou floor de math.h avec des doubles ou des float, mais ça ne marche pas.
Quelqu'un aurait-il une solution à ce problème ?

Merci d'avance


Milie_k33

P.S: mon bout de code est celui-ci:


r=((i-(width/2))*sin((
double)(omega*conv))+(j-(length/2))*cos((
double)(omega*conv)));
avec r en int

2 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
17 mai 2005 à 11:03
normalement :
double d = 917.0025635; // ou résultat d'un calcul quelconqueint r (int)d;> r = 917;

Par contre il faut faire attention à ce que d soit entre -2^31 et +2^31-1 (sur machine 32 bits) pour ne pas avoir d'overflow du type int.
3
milie_k33 Messages postés 4 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 17 mai 2005
17 mai 2005 à 13:11
Ca ne marche toujours pas.
En fait, quand je calcule r=((i-(width/2))*sin((double)(omega*conv))+(j-(length/2))*cos((double)(omega*conv))); avec r en double, il me sort, pour i et j =0, width =600, omega=1, conv=pi/180 et length=1834, r=4369269744,4641476 ??? alors que ça devrait être -917.0913427 ! Donc (int)r me donne n'importe quoi, normal !
Je ne comprends pas. De plus, quand je calcule avec omega=0, r=4294966379.0000000, et il me ressort bien (int)r= -917 !!!.

Je ne comprends pas !


Milie_k33
0
Rejoignez-nous