Problème de transtypage [Résolu]

milie_k33 4 Messages postés mardi 10 mai 2005Date d'inscription 17 mai 2005 Dernière intervention - 17 mai 2005 à 10:53 - Dernière réponse : milie_k33 4 Messages postés mardi 10 mai 2005Date d'inscription 17 mai 2005 Dernière intervention
- 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
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
ymca2003 2070 Messages postés mardi 22 avril 2003Date d'inscription 3 juillet 2006 Dernière intervention - 17 mai 2005 à 11:03
3
Merci
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.

Merci ymca2003 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de ymca2003
milie_k33 4 Messages postés mardi 10 mai 2005Date d'inscription 17 mai 2005 Dernière intervention - 17 mai 2005 à 13:11
0
Merci
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
Commenter la réponse de milie_k33

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.