Comment Python peut-il se tromper sur un calcul aussi simple ?
serge_rouvez
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
serge_rouvez Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
serge_rouvez Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
Bonsoir à tous,
Je m'appelle Serge, je suis enseignant et je débute dans la programmation. On m'a conseillé le langage Python, et le livre de Gérard Swinnen pour débuter. Soit dit en passant, c'est super : très pédago, très progressif, et le langage ne me surprend pas.
Par contre, j'ai été surpris par un résultat à un exercice. La machine se trompait dans une multiplication. Ceci m'a conduit à faire un test extrèmement simple, et le résultat me surprend beaucoup. Je vous laisse admirer cette copie d'écran : Comment Python peut-il se tromper sur un calcul aussi simple ? Je me suis dit que c'était un problème lié à la version de Python la plus récente, mais j'ai obtenu le même résultat avec un IDLE exploitant Python 2.7.8.
Pour info, mon ordinateur utilise un processeur 64 bits AMD FX(tm)-4100 Quad-Core Processor × 4 et tourne sous ubuntu 14.10.

Je m'appelle Serge, je suis enseignant et je débute dans la programmation. On m'a conseillé le langage Python, et le livre de Gérard Swinnen pour débuter. Soit dit en passant, c'est super : très pédago, très progressif, et le langage ne me surprend pas.
Par contre, j'ai été surpris par un résultat à un exercice. La machine se trompait dans une multiplication. Ceci m'a conduit à faire un test extrèmement simple, et le résultat me surprend beaucoup. Je vous laisse admirer cette copie d'écran : Comment Python peut-il se tromper sur un calcul aussi simple ? Je me suis dit que c'était un problème lié à la version de Python la plus récente, mais j'ai obtenu le même résultat avec un IDLE exploitant Python 2.7.8.
Pour info, mon ordinateur utilise un processeur 64 bits AMD FX(tm)-4100 Quad-Core Processor × 4 et tourne sous ubuntu 14.10.

A voir également:
- Comment Python peut-il se tromper sur un calcul aussi simple ?
- Comment calculer la moyenne sur excel - Guide
- Iphone 14 simple - Guide
- Citizen code python avis - Accueil - Outils
- Simple pdf - Télécharger - PDF
- Calcul km marche à pied gratuit - Télécharger - Sport
3 réponses
Une erreur classique avec les flottants, c'est un problème de précision.
serge_rouvez
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
Ah oui, en effet : on m'a indiqué via Facebook un lien qui répond. https://docs.python.org/2/tutorial/floatingpoint.html Merci ! :)
Bonjour,
je ne connais pas trop Python mais je viens d'essayer avec PHP
donne 4.95
par contre en lui demandant le resultat avec 50 décimales
donne 4.94999999999999928945726423989981412887573242187500
Avec 15 décimales
donne 4.949999999999999
Le problème que tu soulèves n'est donc pas réservé à Python. Du coup je suis ton post avec interêt !
Cdt
En informatique 99% des problèmes se situent entre le fauteuil et le clavier
je ne connais pas trop Python mais je viens d'essayer avec PHP
echo 3 * 1.65;
donne 4.95
par contre en lui demandant le resultat avec 50 décimales
echo number_format (1.65*3, 50);
donne 4.94999999999999928945726423989981412887573242187500
Avec 15 décimales
echo number_format (1.65*3, 15);
donne 4.949999999999999
Le problème que tu soulèves n'est donc pas réservé à Python. Du coup je suis ton post avec interêt !
Cdt
En informatique 99% des problèmes se situent entre le fauteuil et le clavier
Salut, essayer d'écrire 1.65 en binaire c'est comme essayer 1/3 en décimale, il faut tronquer ou s'appeler Chuck Norris, quoique celui qui trouve la solution au premier problème du prix millénaire pourrais trouver une façon d'écrire n'importe quel nombre rationnel sans tronquer (en retrouvant la fraction correspondante en un temps record), mais celui-ci serait trop occupé a casser les chiffrements basé sur la difficulté de factorisation.