Autres Le bug de Python

momuro
Passionné
Messages
3 462
Fofocoins
96 366
Genre
Garçon
Bonjour à tous, j’ai remarqué un bug sur ma calculatrice graphique en plein cours de maths sur Python.
J’ai montré au prof et il ne comprenait pas pourquoi ça faisait ça. Et ça fait pareil avec toutes les applications Python en ligne sur internet.
Je vous explique : quand on additionne plusieurs fois 0,1 au bout d’un moment on tombe sur des décimales gigantesques.
C’est quand on additionne 7 fois 0,1 qu’on tombe sur un résultat pas juste du tout :
Au lieu de trouver 0,8 on trouve 0,799999999999999999999…..
Et ça le fait à tous les résultats à partir de 20 fois que ça le fait à tous les résultats.
Vous pouvez rester en écrivant ce programme où « x » est le résultat des additions de 0,1 et « y » le nombre de fois qu’on a additionné, « •• » représente l’indentation :
x=0,1
a=0
while a<30:
••x=x+0,1
••a=a+1
••print(x)
••print(a)



Ce programme affichera tous les résultats avec en dessous le nombre de fois qu’on a additionné.
Est-ce que vous savez pourquoi il y a ce bug et à quoi il est dû ?
 
L
Loup-blanc
Anonyme
Bonjour à tous, j’ai remarqué un bug sur ma calculatrice graphique en plein cours de maths sur Python.
J’ai montré au prof et il ne comprenait pas pourquoi ça faisait ça. Et ça fait pareil avec toutes les applications Python en ligne sur internet.
Je vous explique : quand on additionne plusieurs fois 0,1 au bout d’un moment on tombe sur des décimales gigantesques.
C’est quand on additionne 7 fois 0,1 qu’on tombe sur un résultat pas juste du tout :
Au lieu de trouver 0,8 on trouve 0,799999999999999999999…..
Et ça le fait à tous les résultats à partir de 20 fois que ça le fait à tous les résultats.
Vous pouvez rester en écrivant ce programme où « x » est le résultat des additions de 0,1 et « y » le nombre de fois qu’on a additionné, « •• » représente l’indentation :
x=0,1
a=0
while a<30:
••x=x+0,1
••a=a+1
••print(x)
••print(a)



Ce programme affichera tous les résultats avec en dessous le nombre de fois qu’on a additionné.
Est-ce que vous savez pourquoi il y a ce bug et à quoi il est dû ?
Désolé momo j’ai recherché sur gogole
Et j’ai rien trouvé, ah pardon c’est moi le gogole mdr
J’ai recherché sur Google (voila c mieux )
Par contre j’ai perdu 93% du fonctionnement de mon cerveau 🧠 mdr ^^
 
Rat Sérieux
Passionné
Messages
3 970
Fofocoins
59 536
C'est bizarre ce bug, plutôt que de demander à un prof de maths, n'aurais-tu pas mieux fait de demander à un réparateur ? Y a sûrement un problème avec les mécanismes internes
 
momuro
Passionné
Messages
3 462
Fofocoins
96 366
Genre
Garçon
Là c’est en additionnant 23 fois 0,1
Le bug de Python
 
CL_16_F1_TEAM
Hyper actif
Messages
91
Fofocoins
7 235
Genre
Homme
Oui en fait j'ai l'explication... Je sais pas si se sera très clair, mais je vais essayer : en fait, il faut se baser sur 1 pour comprendre : 1 ÷ 3 =1/3 où, 0,333333333... Hors, si on fait 0,333333... × 3 = 0,99999999...... En gros ça dit que 1=0,99999.... Du coup, je pense que Python fait ça. Les développeurs ont du faire en sorte qu'au delà de certaines décimales, il retourne sur la décimale la plus juste.
 
momuro
Passionné
Messages
3 462
Fofocoins
96 366
Genre
Garçon
Oui en fait j'ai l'explication... Je sais pas si se sera très clair, mais je vais essayer : en fait, il faut se baser sur 1 pour comprendre : 1 ÷ 3 =1/3 où, 0,333333333... Hors, si on fait 0,333333... × 3 = 0,99999999...... En gros ça dit que 1=0,99999.... Du coup, je pense que Python fait ça. Les développeurs ont du faire en sorte qu'au delà de certaines décimales, il retourne sur la décimale la plus juste.
Ça fait pareil avec 0,01 mais pas avec 1
 
Rat Sérieux
Passionné
Messages
3 970
Fofocoins
59 536
Oui en fait j'ai l'explication... Je sais pas si se sera très clair, mais je vais essayer : en fait, il faut se baser sur 1 pour comprendre : 1 ÷ 3 =1/3 où, 0,333333333... Hors, si on fait 0,333333... × 3 = 0,99999999...... En gros ça dit que 1=0,99999.... Du coup, je pense que Python fait ça. Les développeurs ont du faire en sorte qu'au delà de certaines décimales, il retourne sur la décimale la plus juste.
Mathématiquement, c'est même une démonstration du fait que 0,999... (à condition qu'après la virgule il y ait bien une infinité de 9, pas d'autre chiffre, et bien une infinité au sens mathématique et pas juste un nombre qui nous paraît énorme) est égal à 1
 
CL_16_F1_TEAM
Hyper actif
Messages
91
Fofocoins
7 235
Genre
Homme
Mathématiquement, c'est même une démonstration du fait que 0,999... (à condition qu'après la virgule il y ait bien une infinité de 9, pas d'autre chiffre, et bien une infinité au sens mathématique et pas juste un nombre qui nous paraît énorme) est égal à 1
Oui. Et y a même un deuxième argument : entre 0.99999999...... et 1 il n'y a aucun nombre. Donc ils sont égaux !!!