le 05-13-2016 03:36 AM
Bonjour à tous,
Avec un indicateur U32 il est possible d'avoir accès à la fenêtre "Display Format",
... et de configurer ce U32 avec "16 Digits of Precision". (par exemple)
(même possibilité avec un : I32, I16, U16, I8, U8)
Avoir un U32 qui contient "175" et un indicateur qui me donne "175,0000000000000000" ....
n'est pas "mathématiquement" faux ... mais ce type d'affichage au "sens d'un U32" est (à mon avis) totalement absurde.
De plus ... cette possibilité de LV ouvre la porte sur des erreurs d'affichage, comme par exemple ceci :
Là ... je pense qu'il ne s'agit plus d'un simple "comportement", mais qu'il y a un soucis.
Pour les numériques I32, U32, I16, U16 ... etc ... , je pense qu'il faudrait "revoir" l'accès à la fonction "Digits of precision"
et d'une façon plus globale (pour ces mêmes numériques) il me semble qu'il faudrait "repenser" l'accès à la partie grisée de la fenêtre ci-dessous.
Pouvoir afficher "79,9999... " avec un U32 ne devrait-il pas faire l'objet d'un correctif ?
L'accès à "Digits of Precisions" pour les "numériques simples" ne devrait-il pas être "repensé" ?
L'ensemble du comportement de LabVIEW à ce sujet vous semble-t-il cohérent ?
Qu'en pensez-vous ?
le 05-13-2016 03:55 AM
Je suis tout à fait d'accord avec toi 😄
C'est pas comme si ce sujet était génant, et me posait problème en ce moment.
Je me permets afin de donner un peu de contexte à cette découverte le lien du post initial à titre informatif :
http://forums.ni.com/t5/Discussions-au-sujet-de-NI/Curieux-Arrondi-Addition/td-p/3274519/page/1
le 05-13-2016 04:08 AM
Bonjour Michael,
sur le dernier message du thread dont tu as donné le lien ... j'ai placé un lien vers celui-ci.
Mais j'ai oublié de le faire en "sens inverse" ... merci de l'avoir fait.
le 05-13-2016 08:49 AM
Un grand "merci" ... mais je ne mérite aucun compliments ici !
Je ne suis strictement pour rien dans la mise en évidence de ce comportement .... le véritable cerveau est thib_fr !
Ceci étant dit,
Le sujet semble "intéresser".
Il s'agit d'un simple "retour utilisateur", le seul but étant toujours le même (quoi d'autres?) faire progresser LV.
L'avis de NI sur le sujet serait des plus intéressants. (et je pense "attendu")
à l'avance, merci à eux.
le 05-13-2016 09:08 AM
[HS ON]
Ouadji a écrit :
Un grand "merci" ... mais je ne mérite aucun compliments ici !
Tu as raison Ouadji, en plus sinon tu vas me passer devant après sur la semaine 😛
[HS OFF]
le 05-30-2016 03:16 AM
Je "remonte" ce sujet (une seule fois) ... j'aimerais avoir la position de NI sur la question. Merci.
le 05-30-2016 03:41 AM
c'est peut être pour faire du binaire en logique floue
le 05-31-2016 12:55 PM
05-31-2016 06:01 PM - modifié 05-31-2016 06:20 PM
voilou, j'ai eu mon explication.
Avec LabVIEW, le format d'affichage est toujours le format Float, même pour les numériques "simples". (il n'existe pas de Contrôle ayant un format spécifique U32).
(ça, je ne savais pas, j'ai appris quelque chose !)
Simplement, pour les numériques "simples" (I32,U32,I16, etc ..), le paramètre "digits of précision" est placé à 0.
Notre "79,9999" est uniquement un résultat visuel et ne concerne absolument pas la contenu réel du fil ... soit, 80.
D'ailleurs, si on prend (par exemple) un DBL et que l'on place son "digits of précision" à N...
et qu' ensuite on remplace ce DBL par un U32 ... labVIEW reset automatiquement le paramètre "digits of précision" à 0.
alors ?
Premièrement, modifier la valeur (zéro) de "digits of précision" pour tous les numériques "simples" n'a pas de sens.
LabVIEW, dans l'absolu, autorise de le faire ... par polyvalence de la boîte de dialogue des numériques ... mais cela n'a aucun sens.
Deuxièmement ... si on le fait malgré tout, puisqu'un Contrôle est d'office un Float, on retombe sur les soucis des floats ... les arrondis, etc.
Et comme il n'est pas possible de représenter avec un Float et avec une précision absolue le nombre "80",
à partir d'un "digits of précision" >15 on affiche "79,999..". Et même sans cela, afficher 80,0000 avec un U32 est vide de sens.
Le "centre" de ce problème est que LabVIEW n'a qu'un seul format pour afficher les numériques ... le format à virgule flottante.
(je parle bien d'affichage et rien d'autres .... un U32 occupera toujours 32bits en mémoire, et sur un fil une valeur U32 de 80 sera toujours 80)
le 06-01-2016 02:56 AM
Merci pour ces précisions Ouadji, cela explique bien des choses, et confirme l'intérêt du contrôle que j'ai mis en place dans mon système 😄