python tronquer après des centaines?
Comment peut tronquer une entrée comme 315.15321531321
Je veux raccourcir toutes les valeurs après la centième position de sorte qu'il devient 315.15
comment dois-je faire?
Vous pouvez également regarder les stackoverflow.com/questions/455612/...
Rex, j'ai bien aimé la réponse à la question que vous avez cité beaucoup, je viens de upvoted; vous avez fait un excellent travail en expliquant les liens entre int, float et Décimal en Python.
Rex, j'ai bien aimé la réponse à la question que vous avez cité beaucoup, je viens de upvoted; vous avez fait un excellent travail en expliquant les liens entre int, float et Décimal en Python.
OriginalL'auteur | 2009-06-09
Vous devez vous connecter pour publier un commentaire.
Chaîne de formatage sous python 2.x devrait le faire pour vous:
Ce qui limite la représentation de chaîne à seulement 2 chiffres après la virgule. Notez que si vous utilisez
round(315.153215, 2)
, vous vous retrouverez avec une autre valeur flottante, qui est naturellement imprécis (ou overprecise, selon la façon dont vous le regardez):Techniquement,
round()
est correct, mais il n'a pas de "tronquer" les résultats que vous avez demandé à315.15
. En outre, si vous arrondir une valeur comme 315.157, il va produire quelque chose de plus 315.16... pas sûr si c'est ce que vous entendez par "tronquer".Fait intéressant, j'ai lu hier que Python 3.1rc1 choisit le plus court représentation de chaîne qui correspond au même nombre à virgule flottante, de sorte que votre deuxième exemple avec round() serait d'imprimer 315.15 comme prévu: docs.python.org/dev/py3k/whatsnew/...
Merci, Greg - je ne le savais pas. Bon pour plus d'infos, plus j'entends parler de py3k, de plus je ne peux pas attendre pour l'utiliser au jour le jour!
Idem pour NicDumZ commentaire.
OriginalL'auteur Jarret Hardie
Ressemble print "%.2f" ne l'arrondissement.
Voici le code Python qui arrondit et tronque
OriginalL'auteur rainerpm
Si vous travaillez avec des montants en devise, je recommande fortement que vous utilisez Python décimal de classe à la place: http://docs.python.org/library/decimal.html
OriginalL'auteur Dave
Si vous voulez juste pour l'afficher raccourci, vous pouvez utiliser le
"%f"
mise en forme du pavillon:Si vous voulez vraiment couper les "autres" les chiffres de, faire quelque chose comme:
Vous avez tout à fait raison...
Et puis il y a la builtin round()...
OriginalL'auteur sth
Fonction intégrée
round()
:OriginalL'auteur Triptych
Vous avez plusieurs options: vous pouvez arrondir le nombre de l'utilisation de round(), cependant, cela peut présenter certaines inexactitudes (315.15 peuvent arrondir pour 315.150000003 par exemple). Si vous êtes simplement à la recherche de tronquer la valeur du flotteur lorsque vous êtes à l'affichage, vous pouvez spécifier la largeur de la sortie à l'aide de printf("%.2f", mynumber). C'est sans doute une meilleure solution, car sans en savoir plus au sujet de vos applications, c'est une bonne idée en général de garder toute la longueur de la nombre du calcul.
OriginalL'auteur Zxaos
Lorsque l'on travaille avec
Decimal
types et de la monnaie, où le montant doit être précis, voici ce que j'ai trouvé pour tronquer pour cents (centièmes):Un peu d'histoire: j'ai essayé
quantize
mais il a tendance à tour plutôt que de les tronquer. Et je ne pouvais pas en bonne conscience utilisation coûteuse de chaîne de formatage pour quelque chose de si simple. Et enfin, je ne voulais pas de précision les problèmes de lafloat
donc j'utilise très spécifique de la coulée qui est probablement excessif.OriginalL'auteur Neil C. Obremski
Peut-être que ce sera vous aider à:
Explication: Si vous voulez arrondir à la deuxième décimale, alors vous devriez:
1. multipliez votre nombre par 100; cela vous donne 31515.321531321,
2. convertir ce nouveau numéro en entier; int(31515.321531321) vous donne 31515,
3. divisez ce chiffre par 100.0; 31515/100.0,
4. et vous obtenez la bonne réponse; 315.15
Profitez-en!
OriginalL'auteur eod