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 :

Bizarrerie de System.Math


Sujet :

Langage Delphi

  1. #1
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 381
    Points : 2 995
    Points
    2 995
    Par défaut Bizarrerie de System.Math
    Bonjour,

    Je viens de constater quelque chose d'étrange (enfin, à mon sens).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      if System.Math.SameValue(System.Math.NaN, 256.36) then
        ShowMessage('Identiques');
    Résultat: affiche "Identiques"

    Où est la logique qui m'échappe ??

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 935
    Points
    40 935
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Citation Envoyé par Dans le source
    { The following constants should not be used for comparison, only
    assignments. For comparison please use the IsNan and IsInfinity functions
    provided below. }
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 381
    Points : 2 995
    Points
    2 995
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bonjour,
    hummm ... J'aurais préféré avoir ce genre d'indication dans l'aide de SameValue

    Mais d'accord ! Je vais devoir tenir compte de ça dans ma fonction personnalisée de comparaison.

  4. #4
    Membre du Club
    Homme Profil pro
    Consultant en Automation
    Inscrit en
    Mai 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Automation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2009
    Messages : 31
    Points : 46
    Points
    46
    Par défaut
    Bonjour,
    C'est comme si :
    - T'as une voiture avec une boite 6 vitesses,
    - Alors à un moment sur l'autoroute, tu passes la 6ème,
    - Là la boite explose,
    - Alors seulement tu lis la notice du véhicule (en bon français qui se respecte),
    - Et tu lis en petits caractères : " Nota important : la 6ème vitesse est réservée aux tests en usine, ne pas utiliser si le véhicule n'est pas à l'arrêt.".

    C'est pas parce que c'est écrit quelque part que c'est judicieux.

    Juste mes 2 cents...

  5. #5
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 381
    Points : 2 995
    Points
    2 995
    Par défaut
    Citation Envoyé par PPA94 Voir le message
    Bonjour,
    C'est comme si :
    - T'as une voiture avec une boite 6 vitesses,
    - Alors à un moment sur l'autoroute, tu passes la 6ème,
    - Là la boite explose,
    - Alors seulement tu lis la notice du véhicule (en bon français qui se respecte),
    - Et tu lis en petits caractères : " Nota important : la 6ème vitesse est réservée aux tests en usine, ne pas utiliser si le véhicule n'est pas à l'arrêt.".

    C'est pas parce que c'est écrit quelque part que c'est judicieux.

    Juste mes 2 cents...
    whaouh ! Donc tu as lu tout le code source de Delphi (si j'ai bien compris puisque tu parles de lire la notice avant utilisation ) ?
    Je suis impressionné. Le dernier qui m'a dit ça se nommait Olivier Dahan (oui oui, comme le type qui fait des films) et était surnommé Merlin.
    Mais ça, ça remonte loin. Au temps des news sur nzn .... Les anciens s'en souviennent encore.
    Je regrette les grandes discussions entre lui et Fred Brouard qui ont fait les grandes heures de cette époque

  6. #6
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 930
    Points : 1 959
    Points
    1 959
    Par défaut
    Citation Envoyé par Papy214 Voir le message
    Mais ça, ça remonte loin. Au temps des news sur nzn .... Les anciens s'en souviennent encore.
    Je regrette les grandes discussions entre lui et Fred Brouard qui ont fait les grandes heures de cette époque
    Oh pétard, j'ai fais un brusque retour dans le temps,... de combien... 20 ans ? ... avec un vague souvenir de lecture de ces échanges, c'était effectivement mémorable !

    Bon, je voudrais pas faire un HS, désolé, mais je me demande ce que Merlin est devenu, depuis qu'il est passé à C#, on ne le voit plus sur les forums Delphi...

  7. #7
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 381
    Points : 2 995
    Points
    2 995
    Par défaut
    https://www.developpez.com/user/profil/73/Merlin

    sa dernière activité ici semble assez loin dans le temps

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 935
    Points
    40 935
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    Citation Envoyé par Papy214 Voir le message
    hummm ... J'aurais préféré avoir ce genre d'indication dans l'aide de SameValue

    Mais d'accord ! Je vais devoir tenir compte de ça dans ma fonction personnalisée de comparaison.
    sortie de son contexte je pense que le code indiqué ne veut rien dire, mais s'il s'agit de savoir si une valeur quelconque est ou n'est pas un nombre
    je pense que ton code devrait être ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if System.Math.isNaN(256.36) then showmessage('identiques');
    en testant 256.36/0 je pense que le message s'afficherait pas essayé encore
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  9. #9
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 381
    Points : 2 995
    Points
    2 995
    Par défaut
    c'est un collègue qui a écrit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function ApproximativelyEquals(A, B: Single): Boolean;
    begin
      Result := SameValue(A, B, ComparisonPrecision);
    end;
    et j'ai eu le problème au moment où une des deux valeurs était un nan.
    C'est là que j'ai fouiné pour comprendre.

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

Discussions similaires

  1. [CompactFramework][C#] Method not found: Floor System.Math
    Par dkmix dans le forum Windows Mobile
    Réponses: 2
    Dernier message: 14/02/2011, 20h24
  2. Déclaration d'un system.math
    Par zooffy dans le forum ASP.NET
    Réponses: 6
    Dernier message: 26/02/2009, 18h25
  3. System.math.round problème d'arrondi..
    Par Destiny dans le forum C#
    Réponses: 8
    Dernier message: 09/09/2007, 11h54
  4. bizarrerie avec l'appel system read sous linux.
    Par Hypnocrate dans le forum C
    Réponses: 20
    Dernier message: 20/11/2005, 03h47
  5. Maths : équations
    Par Anonymous dans le forum Mathématiques
    Réponses: 5
    Dernier message: 02/05/2002, 17h41

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