Discussions au sujet de NI LabVIEW

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

Curieux !!! Arrondi Addition

解決済み
解決策を見る

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 件の賞賛
メッセージ1/39
6,055件の閲覧回数

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
メッセージ2/39
6,054件の閲覧回数

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 スマイリー ハッピー

 

 

c'est pas courant d'avoir besoin de plus de 15 chiffres significatifs スマイリー びっくりした

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

0 件の賞賛
メッセージ3/39
6,049件の閲覧回数

Salut Michael,

 

Bienvenue dans le monde des nains de jardin, des trolls et autres farfadets  スマイリー ハッピー

 

t'en veux une autre ? (une belle aussi)  スマイリー ウインク

 

 

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.    スマイリー 平静

 

Merci.

 

Eric ?

 

0 件の賞賛
メッセージ4/39
6,034件の閲覧回数

Un  document   intéressant.

メッセージ5/39
6,024件の閲覧回数

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 件の賞賛
メッセージ6/39
6,021件の閲覧回数

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 件の賞賛
メッセージ7/39
6,003件の閲覧回数

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 スマイリー ハッピー

 

 

c'est pas courant d'avoir besoin de plus de 15 chiffres significatifs スマイリー びっくりした

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 件の賞賛
メッセージ8/39
5,981件の閲覧回数

Bonjour Michael,

 

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

 

スマイリー とてもハッピー

 

(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  スマイリー ウインク

 

(je me soigne, mais sans résultats  いらだったスマイリー )

0 件の賞賛
メッセージ9/39
5,974件の閲覧回数

...

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 スマイリー ウインク

 

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

 

0 件の賞賛
メッセージ10/39
5,963件の閲覧回数