Discussions au sujet de NI LabVIEW

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

Curieux !!! Arrondi Addition

Résolu !
Accéder à la solution

Bonjour les gens,


Je viens de mettre le doigt sur quelques choses digne de Ouadji 😄

 

Mais qui plus sérieusement me pose des soucis.


En effet, quand on additionne deux valeurs simple avec 20 décimales de précision (exemple 77 + 1), et bien je vous le donne en mille pour labview la somme ne fait pas 78 ..... -_- mais "77,999999999999999900".

 

Alors si quelqu'un peut m'expliquer le pourquoi du comment XD, car là je ne vois pas , et c'est plutôt problématique dans mon application.

Un petit exemple tout simple en pièce jointe.


bonne soirée,

 

Michael

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
0 Compliments
Message 1 sur 39
5 678 Visites

Bon en creusant, ma première hypothèse serait la précision à 10e-20 que Labview ne sait pas gérer.

Je ne m'étais pas poser la question avant, vu que le champs permettant de spécifier le nombre de chiffre après la virgule n'est pas  borné.

 

Il faut en revenir à priori à la définition d'un "DBL" double précision ~15 chiffres significatifs......

 

Forcément, je met le doigt la dessus après avoir livrer mon outil 😞

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
Message 2 sur 39
5 677 Visites

comme disait mon prof de math en 4 éme

ce n'est pas grave de se tromper ce qui est grave c'est de ne pas s'en apercevoir Smiley heureux

 

 

c'est pas courant d'avoir besoin de plus de 15 chiffres significatifs Smiley surpris

c'est pourquoi ? si cela n'est pas indiscret...

0 Compliments
Message 3 sur 39
5 672 Visites

Salut Michael,

 

Bienvenue dans le monde des nains de jardin, des trolls et autres farfadets  Smiley heureux

 

t'en veux une autre ? (une belle aussi)  Smiley clignant de l'œil

 

 

yyyyyy.png

 

ceci dit ... je ne comprends pas pourquoi ???

 

en effet, les 3 nombres : 90000000000000000  ,  100 , 90000000000000100  sont tous les 3 parfaitement représentables sur 64bits. ( ici )

 

 

(signe / exposant / mantisse  - norme IEEE754)

 

90000000000000000 >IEEE754> =   0   00000010011   1111101111101000010111101101110010010000000000000000

100               >IEEE754> =   0   00000000000   0000000000000000000000000000000000000000000001100100

90000000000000100 >IEEE754> =   0   00000010011   1111101111101000010111101101110010010000000001100100

 

 

Il n'y a donc aucun problème particulier pour représenter ces 3 nombres sur 64 bits.

 

Alors pourquoi Labview, qui utilise cette norme IEEE754, et qui utilise bien les 64 bits nécessaires (DBL) ... n'y arrive-t-il pas ??

 

Je pense avoir déjà lu quelque chose à ce sujet ... mais plus moyen de retrouver l'info.

 

Un d'entre vous pourrait-il nous (ré)expliquer où se trouve le soucis à ce sujet avec LabVIEW.    Smiley indifférent

 

Merci.

 

Eric ?

 

0 Compliments
Message 4 sur 39
5 657 Visites

Un  document   intéressant.

Message 5 sur 39
5 647 Visites

Le timeout (absurde) du forum NI m'oblige à reposter juste pour ceci :

 

document  intéressant sur le sujet de la représentaion des nombres en virgules flottantes et de l'arrondi inévitable. ( x )

 

J'en arrive (un peu) à la conclusion qu'il est illusoire, avec un DBL, d'obtenir une réelle précison au delà de 16 digits (significant et/ou precision digits)

0 Compliments
Message 6 sur 39
5 644 Visites

Je note malgré tout certains comportement curieux ... et qui vont à l'encontre de la doc NI.

 

La fonction "Epsilon" est justement là pour pouvoir établir "l'égalité cachée" entre deux DBL.

 

La doc NI dit ceci :

 

yyyyyy.png

 

Cependant, voici le code ci-dessous :

 

xxxxx.png

 

La fonction "égalité?" indique False !

 

Je fais donc la soustraction pour pouvoir ensuite comparer la différence à "Epsilon".

Cette soustraction me montre bien une différence "très petite" ... m'indiquant que ces 2 DBL peuvent "probablement" être considérés comme égaux.

 

Mais ... cette différence n'est pas inférieure ou égale à Epsilon ! ... mais vaut le double de Epsilon ?? (exactement 2x)

Dans d'autres "tests" j'ai même parfois obtenu une différence de  4 x Epsilon.

 

Dès lors, impossible d'utiliser cette fonction Epsilon pour établir la "proximité suffisante" pour conclure à une égalité.

 

Doc NI : " Machine Epsilon " : represents the round-off error for a floating-point number with a given precision "

 

Concernant l'utilisation de cette fonction "Epsilon" ... les résultats obtenus me semblent curieux.

Une soustraction qui donne en résultat ... parfois 2xEpsilon ... parfois 4xEpsilon ... ce comportement est-il normal ?

Et si oui ... comment savoir quel multiple de Epsilon il faut utiliser pour la comparaison d'égalité ??

0 Compliments
Message 7 sur 39
5 626 Visites

thib_fr a écrit :

comme disait mon prof de math en 4 éme

ce n'est pas grave de se tromper ce qui est grave c'est de ne pas s'en apercevoir Smiley heureux

 

 

c'est pas courant d'avoir besoin de plus de 15 chiffres significatifs Smiley surpris

c'est pourquoi ? si cela n'est pas indiscret...


Dans le cadre de la validation d'une transmission de données via interface radio, j'ai un critère d'erreur pouvant aller jusqu'à 10e-9.

Je voulais mettre le plus de marge possible par rapport à cela, car je venais de découvrir un arrrondi par défaut à 10e-6 qui me générait des erreurs non souhaitable.


C'est comme cela que dans la précipitation, j'ai pris une valeur arbitrairement grande, en me disant que cela n'aurait pas d'incidence sur le reste ......

Toujours quand on a des certitudes que l'on prend le poteau.


Merci Ouadji pour toutes ces précisions ^^ je pensais pas lacher un tel fauve dans l'arène 😛

 

Bonne journée à vous.

Michael

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
0 Compliments
Message 8 sur 39
5 604 Visites

Bonjour Michael,

 

" je pensais pas lacher un tel fauve dans l'arène "

 

Smiley très heureux

 

(note que le problème de la comparaison entre DBLs est un véritable problème qui soulève de vrais débats ... et qui sont justifiés)

 

Ceci dit,, avec moi ... même une simple porte AND devient une machine à gaz  Smiley clignant de l'œil

 

(je me soigne, mais sans résultats  Smiley frustré )

0 Compliments
Message 9 sur 39
5 597 Visites

...

Je voulais mettre le plus de marge possible par rapport à cela, car je venais de découvrir un arrrondi par défaut à 10e-6 qui me générait des erreurs non souhaitable.


C'est comme cela que dans la précipitation, j'ai pris une valeur arbitrairement grande, en me disant que cela n'aurait pas d'incidence sur le reste ......

 

comme on dit le mieux est l'ennemi du bien Smiley clignant de l'œil

 

tu ne compte pas les erreurs au fur et a mesure, par rapport à la quantité de donnée transmise ?

 

0 Compliments
Message 10 sur 39
5 586 Visites