Virgule Flottante Limitations
Mon code:
a = '2.3'
Je voulais afficher a
comme une valeur à virgule flottante.
Depuis a
est une chaîne de caractères, j'ai essayé:
float(a)
Le résultat que j'ai obtenu était :
2.2999999999999998
Je veux une solution pour ce problème. S'il vous plaît, de bien vouloir m'aider.
Je suivais ce tutoriel.
- vous pouvez supprimer le commentaire "C'est un inconvénient de Python." !
- -1 pour les freaks qui downvoted cette question au lieu de le fixer!
- Dupliquer: stackoverflow.com/questions/286061/..., stackoverflow.com/questions/286061/...
Vous devez vous connecter pour publier un commentaire.
Je pense qu'il reflète plus sur votre compréhension de la virgule flottante types de Python. Voir mon article sur les nombres à virgule flottante (.NET-base, mais toujours pertinents) pour les raisons derrière cette "imprécision". Si vous avez besoin de garder l'exacte représentation décimale, vous devez utiliser le décimal module.
Ce n'est pas un inconvénient de python, c'est plutôt un inconvénient de la façon dont les nombres à virgule flottante sont stockés sur un ordinateur. Indépendamment de la mise en œuvre de la langue, vous trouverez des problèmes similaires.
Vous dites que vous voulez "affichage" en virgule flottante, pourquoi ne pas simplement l'affichage de la chaîne? Visuellement il sera identique à ce que vous attendez.
Que Jon a mentionné, si vos besoins sont plus que juste "afficher les" le nombre à virgule flottante, vous devez utiliser la virgule module pour stocker la représentation exacte.
Excellentes réponses en expliquant les raisons. Je souhaite juste ajouter une possible solution pratique à partir de la bibliothèque standard:
C'est en fait une (très) F. A. Q. pour Python et vous pouvez lire la réponse ici.
Edit: je viens de remarquer que Jean Skeet déjà mentionné. Eh bien...