begin process at 2012 05 28 22:55:48
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Base de données

 > 

Autre

 > 

Conversion d'un double en un tableau d'entier


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Conversion d'un double en un tableau d'entier

jeudi 25 mars 2010 à 14:32:15 | Conversion d'un double en un tableau d'entier

ArzadSharlaan

Bonjour à tous,

Je cherche à convertir une varaible de type double en un tableau d'entier afin de pouvoir l'écrire dans une mémoire de type EEPROM sans perdre en précision. Pour cela j'ai réalisé deux fonctions de convertion (le double vers le tableau d'entier et inversement). Dans un premier temps j'ai essayé d'utiliser les oprérateurs de décalage de bits mais mon compilateur ne le prend pas en compte pour des données de type double. Je me suis orienté vers les pointeurs afin de venir récupérer dans les différentes cases mémoires les valeurs du bit de signe, de l'exposant et de la mantisse. Mais je rencontre un problème car cette méthode ne me prend pas en compte les chiffres après la virgule. Je veux dire pas la que j'arrive à convertir dans les deux sens un nombre entier (positif ou négatif) mais j'obtiens toujours des chiffres après la virgule égals à zéro à l'arrivée contrairement au départ.

Voici le code :

double *Double1,Double2,InitPointeur;
short int TabDouble2[4],TabDouble1[4];

InitPointeur = -37.5;
Double1 = &InitPointeur;

//Conversion double vers tableau d'entier
for(i=0;i<4;i++)
{
TabDouble1[i] = DoubleToInt(Double1,i);
}

//Conversion tableau d'entier vers double
Double2 = IntToDouble(TabDouble1);

short int DoubleToInt(double *DataIn,unsigned char Poids)
{
short int DataOut[4];

DataOut[0] = (short int) *DataIn;
DataOut[1] = (short int) *(DataIn+1);
DataOut[2] = (short int) *(DataIn+2);
DataOut[3] = (short int) *(DataIn+3);

switch(Poids)
{
case 0 :
return(DataOut[0]);
break;
case 1 :
return(DataOut[1]);
break;
case 2 :
return(DataOut[2]);
break;
case 3 :
return(DataOut[3]);
break;
}
}

double IntToDouble(short int DataIn[4])
{
double * DataOut;

* (DataOut) = (DataIn[0]);
* (DataOut+1) = (DataIn[1]);
* (DataOut+2) = (DataIn[2]);
* (DataOut+3) = (DataIn[3]);

return(* DataOut);
}

J'ai regardé les différentes valeurs au niveau des cases mémoires mais seulement la première me semble bonne (avec la valeur de la mantisse) mais les autres possèdent des valeurs "bizares" qui ne correspondent pas avec la thérorie (1 bit de signe, 11 bits pour l'exposant et 52 bits pour la mantisse)

Si quelques peut me venir en aide je lui en serais très reconnaissant car j'avoue avoir épuisé toute mon énergie. Si vous voulez des précisions je reste à votre disposition. Merci d'avance.


Cette discussion est classée dans : int, double, short, dataout, datain


Répondre à ce message

Sujets en rapport avec ce message

Aide [ par eikonos ] Je travail sur une dll appellé psfg.dllj'ai ces lignes suivant de codetypedef struct CAMERAPARAM_tag{int nGain;int nOffset;int bOffsetFix;int nUpperLi tableau a double entrée alloué dynamiquement [ par amortlintelligence ] Voila j'aurais voulu utiliser un tableau (tableau de tableau) dans une fonction. Je pense qu'il faut donc que je le crée dynamiquement avec un code du probleme cast [ par morgandetoi06 ] svp aidez moi...j utilise la fonction pow qui renvoie un doubledonc je fait double b; // nombredouble j; // exposantdouble n; // reponsen=pow(b,j);don cosinus [ par anek971 ] Bonjour ,ben avt de demander de l'aide j'ai chercher sur le forum mais ya pas le programme en c.Et en faite c juste pr une verification car mon progra Segmentation Fault....en traitement d'image [ par psysta ] Bonjour,je suis nouveau dans la programmation en C. J'ai un programme Matlab qui marche bien, et je souhaiterais l'implémenter en C. Le pgm compile bi class matrice [ par flaky ] Slt à tousJ'utilise une classe "matrice" (celle de nicolas aunai, téléchargée sur le site) qui fonctionne très bien. Mais j'ai du mal à manipuler l'ob C++ de merde...enfin je veux dire... [ par brindillee ] Salut,J'ai un petit soucis qui me cause des grands soucis...Voila j'ai choppé une fonction de décomposition (svd...) en C++ sur le net mais je n'arriv Lecture d'un fichier quelconque [ par jb60 ] Bonjour,J'aimerais savoir si il est possible de lire les données d'un fichier quelconque lorsqu'on ne connait pas le format du fichier d'origine... Je probleme reallocation memoire vecteur [ par savoyard ] double *b;//fction allocation memoire: (permet d'allouer pas obligatoirement à partir de b[0] mais d ou on veut:double *dvector(int nl,int nh){double aide sur un algorithme en dec-C++ [ par viagra ] je souhaiterais être aidé sur un algorithme sur lequel j'éprouve des problemes. en effet lorsque je compile aussi bien au niveau de dev-c++ et MSYS, l


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,203 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales