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 :

+-NaN qu'est ce que c'est?


Sujet :

Delphi

  1. #1
    Membre averti

    Profil pro
    dirlo
    Inscrit en
    Février 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : dirlo

    Informations forums :
    Inscription : Février 2008
    Messages : 83
    Points : 404
    Points
    404
    Par défaut +-NaN qu'est ce que c'est?
    Bonsoir à tous,
    J'ai écrit une appli il y a bien longtemps, maintenant, sous delphi7 qui m'est bien utile.
    Je ne sais pas pourquoi, mais un bug, exceptionnel au départ, est devenu infranchissable.
    Il s'agit de ce NaN, qui ne bloque pas le déroulement du programme mais donne des résultats inutilisables.
    Est-il possible de traquer cette erreur? Comment? OnError? Try/Finally?
    Sans doute, ça a été traité dans ce forum, mais je n'ai pas su le trouver.
    Merci pour votre aide,

  2. #2
    Membre éclairé
    Avatar de Whiler
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 298
    Points : 664
    Points
    664
    Par défaut
    Salut,

    Ce message manque cruellement de détails pour qu'on puisse t'aider...

    Si tu lances ton application depuis Delphi (F9), arrives-tu à déclencher l'erreur ?
    Sais-tu dans quelle méthode cela se produit ? Arrives-tu à le reproduire systématiquement ? As-tu du code où tu aurais un doute ? ...

  3. #3
    Membre éclairé Avatar de DOLPat®
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 426
    Points : 790
    Points
    790
    Par défaut +-NaN qu'est ce que c'est?
    Bonjour

    NaN signifie Not a Number et est provoqué par une division par zéro d'une fonction mathématique.
    Tu peux vérifier la validité d'un nombre par la fonction IsNan de l'unité Math.
    À +
    Pat.


    Si vous avez trouvé chaussure à votre pied... euh solution à votre problème, n'oubliez pas de clôturer le sujet en le marquant comme:
    ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
    Windows 8.1, Lazarus 1.8.2 SVN 57369 FPC 3.0.4 x86_64-win64-win32/win64

  4. #4
    Membre averti

    Profil pro
    dirlo
    Inscrit en
    Février 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : dirlo

    Informations forums :
    Inscription : Février 2008
    Messages : 83
    Points : 404
    Points
    404
    Par défaut
    Si tu lances ton application depuis Delphi (F9), arrives-tu à déclencher l'erreur ?
    Justement, ça ne déclenche pas d'erreur: mon prog. écrit le résultat d'un Km de calculs dans un fichier texte, et au lieu de valeurs, j'y trouve des quelques fois des Nan (ou -Nan)! ex:
    ....
    336.940 Nan acut
    355.657 Nan acut
    374.376 Nan acut
    373.892 1.303 acut
    373.407 2.608 acut...
    que je lance à partir de l'EDI ou directement l'exécutable, indifféremment.

    NaN signifie Not a Number et est provoqué par une division par zéro d'une fonction mathématique
    D'habitude, une division par zéro déclenche une exception. quand j'observe le résultat, il semble que ce soit des valeurs extrêment petites.

    Tu peux vérifier la validité d'un nombre par la fonction IsNan de l'unité Math.
    J'aurais préféré protéger mon code avec un try/finally/except. N'existe-t-il pas une option du compilateur?

  5. #5
    Membre confirmé
    Homme Profil pro
    Santé
    Inscrit en
    Septembre 2010
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Santé
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2010
    Messages : 290
    Points : 534
    Points
    534
    Par défaut
    Citation Envoyé par parhelie Voir le message
    D'habitude, une division par zéro déclenche une exception. quand j'observe le résultat, il semble que ce soit des valeurs extrêment petites.
    Nan n'est pas une exception.
    Ce n'est souvent qu'une valeur mathématiquement indéterminée, comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Edit1.Text := FloatToStr(0/0);

  6. #6
    Membre averti

    Profil pro
    dirlo
    Inscrit en
    Février 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : dirlo

    Informations forums :
    Inscription : Février 2008
    Messages : 83
    Points : 404
    Points
    404
    Par défaut
    Ok, merci pour vos réponses.

    J'ai trouvé le maillon faible, j'ai mis un if isNan() et tout semble rouler à présent.

    Nan n'est pas une exception.
    En effet, et à mon sens, c'est domage.

    @+

  7. #7
    Membre éclairé

    Homme Profil pro
    Rédacteur technique (retraité)
    Inscrit en
    Octobre 2009
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Rédacteur technique (retraité)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 168
    Points : 807
    Points
    807
    Par défaut
    Voir SetExceptionMask et Set8087CW dans l'aide Delphi !

    Ces fonctions permettent de masquer ou non les exceptions de la FPU dont celles pouvant résulter d'opération sur des NaN.

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

Discussions similaires

  1. est-ce que python est ce que je cherche
    Par SILICONE dans le forum Général Python
    Réponses: 5
    Dernier message: 21/12/2007, 14h23
  2. Qu'est ce que c'est qu'un Trigger ?
    Par shingo dans le forum Requêtes
    Réponses: 2
    Dernier message: 22/10/2003, 22h09
  3. Un daemon qu'est ce que c'est exactement ?
    Par CedricYhuel dans le forum Administration système
    Réponses: 5
    Dernier message: 01/08/2003, 11h56
  4. Qu'est ce que c'est : Le GateA20 ?
    Par le mage tophinus dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 24/02/2003, 15h09
  5. Qu'est-ce que c'est que Nessus, ça fait quoi exactement ?
    Par PeterT dans le forum Développement
    Réponses: 3
    Dernier message: 24/07/2002, 11h23

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