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

Langage Delphi Discussion :

pb ceil et flottant


Sujet :

Langage Delphi

  1. #1
    Membre régulier
    Profil pro
    Ingenieur developpement
    Inscrit en
    Septembre 2002
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingenieur developpement

    Informations forums :
    Inscription : Septembre 2002
    Messages : 175
    Points : 106
    Points
    106
    Par défaut pb ceil et flottant
    J'ai un problème avec la valeur retournez par un Ceil ou plutot avec la valeur à l'intérieur du Ceil.

    Je n'ai pas le même résultat quand je passe par une valeur intermédiaire;

    mes valeurs sont
    LListeEtapeProd.Items[i + 1].QteMP Integer -> 1056
    LEtpProd.EtapeCont.TauxPerte Real -> 60
    LEtpProd.EtapeCont.NbContEntreeContSortie Real -> 1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            LEtpProd.QteMP := Ceil(LListeEtapeProd.Items[i + 1].QteMP / (1 - LEtpProd.EtapeCont.TauxPerte / 100) *
              LEtpProd.EtapeCont.NbContEntreeContSortie);
    retourne 2641

    LQte: Real;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            LQte := LListeEtapeProd.Items[i + 1].QteMP / (1 - LEtpProd.EtapeCont.TauxPerte / 100) *
              LEtpProd.EtapeCont.NbContEntreeContSortie;
            LEtpProd.QteMP := Ceil(LQte);
    retourne 2640

    La deuxième etant la bonne

    C'est embétant de devoir passer par des valeurs intermediaires pour avoir le bon résultat.

    Avez vous déjà eu ce problème ?

  2. #2
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    En fait, ça ne m'étonne pas vraiment.
    Dans le premier cas, tu arrondis directement le résultat, tandis que dans le deuxième tu le castes puis tu l'arrondis. Au moment du cas, à mon avis, tu dois perdre une information qui a des conséquences sur l'arrondi.

    J'aurais donc dit que la solution 1 est la meilleurs.
    Un test à faire tiens : Remplace Real par Extended pour LQte. Je pari que le résultat va être différent.

    De toute façon, perso, je n'ai pas de solution. C'est l'éternel problème des flottants. Tout n'est qu'approximation en mémoire

  3. #3
    Membre régulier
    Profil pro
    Ingenieur developpement
    Inscrit en
    Septembre 2002
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingenieur developpement

    Informations forums :
    Inscription : Septembre 2002
    Messages : 175
    Points : 106
    Points
    106
    Par défaut
    en effet, si je met un extended, il me remet la valeur 2641. Ce qui ne m'arrange pas

    mes valeurs sont pourtant bien ronde dans les points de suivi.

    Pourquoi tant de haine ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/08/2003, 11h48
  2. [Kylix] Kylix3: Pb de virgule flottante
    Par hubble dans le forum EDI
    Réponses: 1
    Dernier message: 22/06/2003, 16h36
  3. Réponses: 8
    Dernier message: 13/01/2003, 17h45
  4. Créer une fenêtre flottante qui ne peut avoir le focus
    Par BestofMac dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/07/2002, 10h46
  5. [Kylix] Probleme de nombre flottant!!
    Par yopziggy dans le forum EDI
    Réponses: 5
    Dernier message: 02/05/2002, 10h13

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