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

Delphi Discussion :

[delphi] Comparaison avec Abs()


Sujet :

Delphi

  1. #1
    Membre éclairé

    Homme Profil pro
    ingénieur, retraité
    Inscrit en
    Février 2007
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur, retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 230
    Par défaut [delphi] Comparaison avec Abs()
    Bonjour,

    L'utilisation de la fonction Abs() dans un If peut se faire, par exemple, ainsi :

    1 - if Abs(V) < N then ...

    2 - if Abs(V) < Abs(N) then ...

    Si 1 ne pose aucun problème, 2 donne un résultat aberrant.

    Par intuition j'ai modifié 2 ainsi :

    2 - if (Abs(V)) < (Abs(N) ) then ...
    qui lui donne une réponse correcte !

    Bizarre ce comportement ?

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Par défaut
    Bonjour,

    Effectivement c'est "bizarre" ... mais bon à savoir.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  3. #3
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par paulfr
    Bonjour,

    L'utilisation de la fonction Abs() dans un If peut se faire, par exemple, ainsi :

    1 - if Abs(V) < N then ...

    2 - if Abs(V) < Abs(N) then ...

    Si 1 ne pose aucun problème, 2 donne un résultat aberrant.

    Par intuition j'ai modifié 2 ainsi :

    2 - if (Abs(V)) < (Abs(N) ) then ...
    qui lui donne une réponse correcte !

    Bizarre ce comportement ?
    moi j'écrirais plutôt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     if ( (abs(v)) < (abs(n)) ) then ...
    on sait jamais
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Foa,

    @ paulfr : Chez moi, les 3 formes que tu proposes marchent parfaitement (Delphi 2006).

    Citation Envoyé par Paul TOTH
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( (abs(v)) < (abs(n)) ) then ...
    Les parenthèses pour faciliter la lecture des expressions, c'est bien, mais inutile d'en abuser.

  5. #5
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par droggo
    Foa,
    Les parenthèses pour faciliter la lecture des expressions, c'est bien, mais inutile d'en abuser.
    tu es certain qu'en en ajoutant encore une paire de plus, le résultat ne serait pas encore plus juste ?
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par paulfr
    2 - if Abs(V) < Abs(N) then ...
    ... donne un résultat aberrant.
    2 - if (Abs(V)) < (Abs(N) ) then ...
    ... donne une réponse correcte !
    Est-ce que la syntaxe correcte ne serait pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ( Abs(V) < Abs(N) )  then  ...
    Juste un peu de provoc pour ceux qui écrivent en Pascal comme en C Pour en revenir à la question initiale, l'erreur ne vient pas du parenthesage. Il faudrait le code complet en particulier si V et N sont des expressions plus compliquées.

  7. #7
    Membre éclairé

    Homme Profil pro
    ingénieur, retraité
    Inscrit en
    Février 2007
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur, retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 230
    Par défaut Abs() - Comparaison
    V et B etaient des variables type Double.

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

Discussions similaires

  1. appel DLL C++ en Delphi (pb avec type)
    Par fkerbourch dans le forum Langage
    Réponses: 7
    Dernier message: 11/07/2005, 17h31
  2. Réponses: 3
    Dernier message: 29/06/2005, 13h56
  3. [CR10][Delphi] PB avec Instruction PrintReport
    Par coucoucmoi dans le forum SDK
    Réponses: 6
    Dernier message: 09/03/2005, 09h30
  4. comparaison avec substring
    Par tidan dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/01/2005, 17h13
  5. QuickReport (dans Delphi 7) avec QRDBText et IBQuery1!!!!!
    Par yvescollet dans le forum Bases de données
    Réponses: 3
    Dernier message: 27/09/2004, 00h56

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