c'est mon code:
print str(float(1/3))+'%'
et cela montre:
0.0%
mais je veux avoir 33%
Que puis-je faire?
python
python-2.x
zjm1126
la source
la source
1/3
dans votre cas), vous avez une valeur unitaire qui doit la multiplier par100
pour obtenir une valeur en pourcentage . Voir les autres réponses pour la différence entre la division entière et flottante.print(str(float(1/3))+'%')
imprimera0.3333333333333333%
- toujours pas exactement ce que vous voulez, mais au moins c'est un peu plus proche. C'est parce que la division fonctionne différemment dans cette version.Réponses:
format
prend en charge un type de précision à virgule flottante en pourcentage :Si vous ne voulez pas de division entière, vous pouvez importer la division de Python3 à partir de
__future__
:la source
float(1)
vraiment plus pythonique que1.
?1.0
place defloat(1)
ou1.
. À mon humble avis, il est moins intrusif que le premier et pas aussi subtil que le second.Il existe une option de formatage en pourcentage beaucoup plus pratique pour la
.format()
méthode de formatage:la source
"%.1f"
formatage old school ?print("%.1f%%" % (100 * 1.0/3))
format
sait déjà imprimer les pourcentages!f"{1/3.0:.1%}"
Juste pour être complet, puisque je n'ai remarqué que personne ne suggérait cette approche simple:
Détails:
%.0f
signifie " imprimer un flottant avec 0 décimale ", donc%.2f
imprimer33.33
%%
imprime un littéral%
. Un peu plus propre que votre original+'%'
1.0
au lieu de1
se charger de forcer la division à flotter, donc plus0.0
la source
1/3
. L'ordre d'évaluation est intentionnel:100.0 * 1 / 3 => 100.0 / 3 => 0.33...
100
vers le1
, pour clarifier les choses..format()
, et que le%
formatage, également connu sous le nom d' interpolation de chaîne en Python, est une alternative parfaitement valable.Vous divisez des entiers puis vous les convertissez en flottant. Divisez plutôt par des flotteurs.
En prime, utilisez les méthodes de formatage de chaînes impressionnantes décrites ici: http://docs.python.org/library/string.html#format-specification-mini-language
Pour spécifier un pourcentage de conversion et de précision.
Un super bijou!
la source
Juste pour ajouter une solution Python 3 f-string
la source
Ensuite, vous voudrez faire ceci à la place:
Le les
.0
dénote comme des flottants et lesint()
arrondit ensuite à nouveau aux nombres entiers.la source
int()
ne tourne pas. par exempleint(1.9) != 2
. L'arrondissement peut être fait comme ceci -round(1.9,0) == 2
int()
arrondit certainement le nombre à la baisse . Mon exemple fait exactement ce que je voulais faire; couper les chiffres puisque c'est ce que voulait l'OP.int()
supprime les chiffres. Il n’arrondit pas. L'arrondi implique qu'il fait quelque chose avec les chiffres. Le résultat final est cependant le même; en ce sens, je comprends votre point de vue. Aussi, l'OP ne précise pas ce qu'il / elle veut faire avec les chiffres a 33,333 ... arrondit à 33. Merci d'avoir répondu à mon commentaire et bonne journée!