IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

double * 2 float*


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 2
    Par défaut double * 2 float*
    Bonjour à tous,

    J'ai besoin de transformer un tableau de double en un tableau de float.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    double *tabDouble;
     
    float *tabFloat;
     
    tabFloat = (float*) tabDouble;
    ca compile mais le resultat n'est pas correct.

  2. #2
    Membre émérite
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Par défaut
    Changer le type du pointeur ne va pas marcher !!!

    Il faut copier chaque élément du tableau de double dans un tableau de float.

  3. #3
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut
    En effet, tu vas juste indiquer au pointeur que tu ne pointes plus sur des double, mais des float. Seulement la zone mémoire, elle, n'a pas changé!
    Ton programme va alors interpréter une zone mémoire qui sensée être un double en float. Mais comme ces deux types de variables ne sont sans doute pas gérées de la même façon en mémoire, il lit n'importe quoi.

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Globalement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    double TableauDeDouble[2];
    Tu as 16 octets dans la zone mémoire de TableauDeDouble: de 0 à 7 pour le premier double et de 8 à 15 pour le second.
    Quand tu fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    float *MesFloat;
    MesFloat = (float*)TableauDeDouble;
    Dans la même zone mémoire, les ocets 0 à 3 seront ton premier float (début de l'ex premier double) et les octets 4 à 7 le second (fin de l'ex premier double).

    Remarque que ton problème serait le même avec long/short.

  5. #5
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 21
    Par défaut
    En admettant que le tableau 'tabFloat' soit correctement allouer, la bonne façon de faire est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    // pour convertir 1 valeur, on déréférence explicitement les pointeurs 
    // pour accéder aux valeurs 
    *tabFloat = (float) *tabDouble;
     
    // pour convertir toute la table de n éléments
    for (int i=0; i<n; ++i)
    {
    	// on accède aux valeurs par l'opérateur d'indexation
    	tabFloat[i] = (float) tabDouble[i];
    }

Discussions similaires

  1. Convertion String en double ou float
    Par superjaja dans le forum C#
    Réponses: 6
    Dernier message: 31/12/2007, 13h00
  2. différence entre double et float
    Par Maria1505 dans le forum C++
    Réponses: 2
    Dernier message: 03/01/2007, 05h16
  3. du double au float
    Par yvesall dans le forum C
    Réponses: 7
    Dernier message: 10/11/2006, 16h13
  4. prototype erf : double ou float ?
    Par nicolas.puiroux dans le forum C
    Réponses: 5
    Dernier message: 07/09/2006, 10h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo