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

LabVIEW Discussion :

Soustractions de chiffres ronds pour un résultat.. pas rond !


Sujet :

LabVIEW

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Soustractions de chiffres ronds pour un résultat.. pas rond !
    Bonjour,

    Pour les besoins du programme que je développe, je place à un moment une soustraction dans plusieurs boucles imbriquées sur un registre à décalage.
    Pour prendre un exemple simple je soustrait 0.1 à 1 jusqu'à ce que le résultat de la soustraction soit nul. Soit {0.9;0.8;0.7;0.6;0.5;0.4;0.3;0.2;0.1;0}.

    Les commandes qui permettent de régler la valeur de départ et le pas de décrémentation sont des double précision et sont des valeurs exactes.

    Il se trouve qu'en dernière position, au lieu d'avoir {0}, j'ai 2.77(etc)E^-17 (soit environ 0). Si je pousse un peu plus loin et que je mets mon tableau en "virgule flottante" j'obtiens par exemple {0.8993;0.8000004;0.69987;etc etc..} C'est à dire presque le résultat souhaité en terme de valeur, mais totalement incompréhensible (en tout cas pour moi). Comme ces valeurs vont êtres envoyées dans un instrument très précis, il est embêtant que je n'obtienne pas les valeurs rondes que je demande dans ce petit exemple tout bête.

    J'ai eu beau essayé de modifier la source (sgl, dbl,flt,...) rien n'y fait.

    Help.. ?

    Merci d'avance.

    Quentin.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 230
    Points : 352
    Points
    352
    Par défaut
    Bonjour,

    Le fait est, tu utilises ici des nombres à virgules flottantes, ce qui peut poser problème au niveau de la programmation (Labview ou autre).
    Si tu fais le test de la soustraction juste avec deux nombres doubles en entrée, à aucun moment tu n'arrives à ce que le résultat soit égal à 0. Tu auras par contre des valeurs approchées.

    Deux liens : le premier renvoie sur la FAQ de Matlab qui expose le même problème : http://matlab.developpez.com/faq/?pa...bres_flottants
    le second sur l'article de la virgule flottante : http://fr.wikipedia.org/wiki/Nombre_flottant

    La FAQ de Matlab propose également une solution qui peut être adaptable sous Labview.
    Je ne réponds pas aux questions techniques via MP. Le but du forum est de permettre de trouver des solutions ensembles pour aider un ensemble de personnes.

    Loi du Chaos Informatique
    L’informatique, ça tient du chaos : une fois ça marche, une fois ça foire, tu sais pas pourquoi, c’est juste que tu viens de changer de lobe sur l’attracteur étrange.

Discussions similaires

  1. un bouton pour deux résultats
    Par lanfeust42 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 01/08/2006, 09h31
  2. scanf pour les debutants pas si sûr...
    Par wimbo dans le forum C
    Réponses: 8
    Dernier message: 29/04/2006, 12h28
  3. Réponses: 2
    Dernier message: 20/04/2006, 14h33
  4. Réponses: 5
    Dernier message: 15/01/2005, 18h29
  5. Réponses: 5
    Dernier message: 23/06/2004, 22h23

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