milie_k33
Messages postés4Date d'inscriptionmardi 10 mai 2005StatutMembreDernière intervention17 mai 2005
-
17 mai 2005 à 10:53
milie_k33
Messages postés4Date d'inscriptionmardi 10 mai 2005StatutMembreDernière intervention17 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
milie_k33
Messages postés4Date d'inscriptionmardi 10 mai 2005StatutMembreDernière intervention17 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 !!!.