Arrondir un nombre en python mais en gardant des zéros de fin
J'ai travaillé sur un script qui prend des données à partir d'un XLS feuille de calcul, arrondit les nombres, et supprime la virgule, ex: 2606.89579999999 devient 26069; Cependant, j'ai besoin de le nombre à arrondir à deux décimales après la virgule, même si il y aurait une fuite de zéro, de sorte 2606.89579999999 devrait devenir 260690.
J'ai actuellement donc i
prend les données de la cellule dans excel, et des tours à deux décimales (i = round(i, 2)
) qui me donne l'unique point décimal dans l'exemple ci-dessus.
J'ai essayé de trouver comment obtenir que cela fonctionne avec Decimal
mais je n'arrive pas à le faire fonctionner.
Tous les autres nombres que les arrondir, si l'arrondi de la valeur n'a pas de fin "0", fonctionne très bien avec round(i, 2)
mais si les chiffres juste pour arriver à la fin *.x0, 0 obtient tombé et mess avec les données.
source d'informationauteur Seth Koberg
Vous devez vous connecter pour publier un commentaire.
Comme tu parles de zéros à droite, c'est une question au sujet de la représentation sous forme de chaîne,
vous pouvez utiliser
Ou de l'utilisation de style moderne avec
format
fonction:et supprimer point avec
replace
outranslate
(_
désigne le résultat de la commande précédente dans la console python):Noter que l'arrondissement n'est pas nécessaire ici, comme
.2f
format applyies le même arrondissement:Mais comme vous l'avez mentionné excel, vous allez probablement choisir de rouler votre propre arrondissement de fonction, ou de l'utilisation décimalcomme
float.round
peut conduire à des résultats étranges en raison de représentation du flotteur:Avec décimale utilisation quantification:
Que, pour votre tâche d'origine, devient:
Et la raison de l'étrange arrondissement vient de l'avant avec
Decimal
: