Pièges avec l'informatique.

Aller en bas

Pièges avec l'informatique.

Message par Dlzlogic le Sam 18 Nov - 14:15

Bonjour,
Petite surprise :
Si on demande à Python de calculer le discriminant de 0.1x² + 0.6x + 0.9 il se plante.
Par contre en C, il n'y a pas de souci.
Il y a de nombreux pièges en informatique à cause de la représentation avec un nombre fini de bits.
Apparemment Python a réussi à en rajouter.
J'avais un long document sur de point précis de la norme et des éventuelles anomalies possibles et des méthodes à employer pour les éviter.
Je ne retrouve plus ce document, mais il est vrai que d'une façon générale les opérations au voisinage de 0 ont une certaine probabilité d'être fausses. C'est la raison pour laquelle on sait que pour tester l'égalité de deux nombres, ou le signe d'un nombre s'il est proche de 0, il faut tester à l'ai de d'un epsilon, par exemple 1.E-10.
Je me suis déjà fait traiter d'ignorant hérétique à ce sujet. Par ailleurs, j'avoue qu'il m'est arrivé de me faire avoir avec cela.
Bonne journée.
avatar
Dlzlogic

Messages : 1431
Date d'inscription : 04/07/2017
Age : 74
Localisation : Proville

Voir le profil de l'utilisateur http://www.dlzlogic.com

Revenir en haut Aller en bas

Re: Pièges avec l'informatique.

Message par Dlzlogic le Dim 19 Nov - 14:42

Bonjour,
Les différentes intervention sur ce sujet sont intéressantes.
D'une part, il est fait allusion à la norme, ça me parait le point positif. On a établi une norme, c'est pas seulement pour se faire plaisir, mais pour que tout le monde fasse pareil. Par exemple, comment expliquer aux élèves que le même calcul fait avec des machines différentes donnent des résultats différent ? Moi, je ne sais pas.
Une autre point qui me parait intéressant et qui n'a pas été évoqué : la machine calcule avec un nombre limité de chiffres significatifs. Le nombre de chiffres affichée est limité. Donc pour des opérations sur des nombres réels, c'est à dire qui contiennent un nombre de chiffres et/ou de décimales non limité, il n'est pas possible d'avoir un résultat "exact".
Enfin, trouver des méthodes ou des langages qui ne se trompent pas consiste à se détourner du problème.
Donc, il ne faut pas faire l'autruche, ce problème est inévitable, malheureusement différent selon les machines et les langages, il faut en permanence le garder à l'esprit si on ne veut pas se planter gravement. En d'autres termes, quel que soit les langages ou les machines, les méthodes pour éviter ces "désagréments" sont les mêmes.
avatar
Dlzlogic

Messages : 1431
Date d'inscription : 04/07/2017
Age : 74
Localisation : Proville

Voir le profil de l'utilisateur http://www.dlzlogic.com

Revenir en haut Aller en bas

Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum