La documentation relative à la round() indique que vous lui passez un nombre, et les positions après la décimale à arrondir. Ainsi, elle devrait faites-le :
n = 5.59
round(n, 1) # 5.6
Mais, en réalité, la bonne vieille bizarrerie de la virgule flottante s'insinue et vous obtenez :
5.5999999999999996
Pour les besoins de l'interface utilisateur, je dois afficher 5.6
. J'ai fait un tour sur Internet et j'ai trouvé quelques documentation que cela dépend de mon implémentation de Python. Malheureusement, cela se produit à la fois sur ma machine de développement Windows et sur chaque serveur Linux que j'ai essayé. Voir aussi ici .
À moins de créer ma propre bibliothèque ronde, y a-t-il un moyen de contourner ce problème ?
4 votes
J'ai essayé avec python 2.7.11 round(5.59) et j'ai obtenu le résultat 5.6 sur les machines Windows et linux x86 64 bit, Cython ? (le lien de documentation mentionné a dû être modifié).
7 votes
Là où ça ne fonctionne pas correctement, c'est
round(5.55, 1) = 5.5
.1 votes
Cela répond-il à votre question ? Limitation des flottants à deux décimales