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

MFC Discussion :

conversion int to float ->resultat erroné


Sujet :

MFC

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Points : 546
    Points
    546
    Par défaut conversion int to float ->resultat erroné
    bonjour,

    je vois pas pourquoi mon code est faux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	CRect Rect;
       this->GetWindowRect(&Rect);
     
       int X = GetSystemMetrics(SM_CXSCREEN),
    	   Y = GetSystemMetrics(SM_CYSCREEN),
    	   x = Rect.right,
    	   y = Rect.bottom;
     
    	p_fResizeRatioX = X / x;
    	p_fResizeRatioY = Y / y;
    Avant d'arriver aux 2 dernieres lignes, les valeurs dans X,Y,x et y changent et du coup les ratios sont faux.

    Que faire ?

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    GetSystemMetrics renvoit un int ,alors ton constat est erroné ...
    ou ton code ne represente pas ce que tu fais.

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Points : 546
    Points
    546
    Par défaut
    j'ai oublié de preciser que p_fResizeRatioX et p_fResizeRatioY sont des floats

    je cherche le ratio entre l'etat normal et l'etat maximisé

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    et bien tu auras la partie entiere de la division.
    tu as dis :
    Avant d'arriver aux 2 dernieres lignes, les valeurs dans X,Y,x et y changent et du coup les ratios sont faux.
    a mon avis c'est faux..
    le mode debug trace est tres bien pour verifier tout ça .
    ou rajoute des TRACE("\n x:%d",x);
    et indique les valeurs obtenues.



  5. #5
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    et pense à caster les int en float avant la division (sinon tu fais une division entière).

  6. #6
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Points : 546
    Points
    546
    Par défaut
    c'est ok maintenant avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	CRect Rect;
       this->GetWindowRect(&Rect);
     
       int X = GetSystemMetrics(SM_CXSCREEN),
    	   Y = GetSystemMetrics(SM_CYSCREEN),
    	   x = Rect.right,
    	   y = Rect.bottom;
     
    	p_fResizeRatioX = (float)X / (float)x;
    	p_fResizeRatioY = (float)Y / (float)y;
    mais je vous assure qu'avant, ca partait en biberine

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conversion int vers Float
    Par roro8 dans le forum Développement de jobs
    Réponses: 5
    Dernier message: 08/02/2010, 12h38
  2. Incohérence à la conversion de int en float
    Par erniubo dans le forum Débuter
    Réponses: 4
    Dernier message: 23/01/2009, 12h19
  3. [VB.NET] Conversion int-> bytes sur 4 octets
    Par SteelBox dans le forum Windows Forms
    Réponses: 11
    Dernier message: 09/01/2005, 23h08
  4. Réponses: 2
    Dernier message: 01/07/2004, 12h36
  5. [débutant] conversion int en hexa
    Par sergoid dans le forum C++Builder
    Réponses: 6
    Dernier message: 16/05/2003, 12h11

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