J'ai un nombre à virgule flottante, disons 135.12345678910
. Je veux concaténer cette valeur à une chaîne, mais je veux seulement 135.123456789
. Avec l'impression, je peux facilement le faire en faisant quelque chose comme:
print "%.9f" % numvar
avec numvar
étant mon numéro d'origine. Y a-t-il un moyen facile de faire ceci?
Avec Python <3 (par exemple 2.6 [voir les commentaires] ou 2.7), il existe deux façons de le faire.
# Option one
older_method_string = "%.9f" % numvar
# Option two
newer_method_string = "{:.9f}".format(numvar)
Notez toutefois que pour Python versions supérieures à 3 (par exemple 3.2 ou 3.3), la deuxième option est préférable .
Pour plus d'informations sur l'option deux, je suggère ce lien sur le formatage de chaîne à partir de la documentation Python .
Et pour plus d’informations sur l’option 1, ce lien suffit et contient des informations sur les différents drapeaux .
Python 3.6 (publié officiellement en décembre 2016), a ajouté le littéral chaîne f
, voir plus d'informations ici , qui étend la méthode str.format
(utilisation d'accolades telles que f"{numvar:.9f}"
résout le problème initial), c’est-à-dire
# Option 3 (versions 3.6 and higher)
newest_method_string = f"{numvar:.9f}"
résout le problème. Consultez la réponse de @ Or-Duan pour plus d'informations, mais cette méthode est rapide .
Juste pour que ce soit clair, vous pouvez utiliser le formatage chaîne f . Cela a presque la même syntaxe que la méthode format
, mais la rend un peu plus agréable.
Exemple:
print(f'{numvar:.9f}')
Plus d'informations sur la nouvelle chaîne f:
Utiliser round
:
>>> numvar = 135.12345678910
>>> str(round(numvar, 9))
'135.123456789'
Ce n’est pas l’impression qui effectue le formatage, c’est une propriété des chaînes, vous pouvez donc simplement utiliser
newstring = "%.9f" % numvar
Si la précision n'est pas connue jusqu'au moment de l'exécution, cette autre option de formatage est utile:
>>> n = 9
>>> '%.*f' % (n, numvar)
'135.123456789'
Pour régler la précision avec 9 chiffres, obtenez:
print "%.9f" % numvar
Retourne la précision avec 2 chiffres:
print "%.2f" % numvar
Retourne la précision avec 2 chiffres et la valeur convertie float:
numvar = 4.2345
print float("%.2f" % numvar)
La fonction str
a un bogue. S'il vous plaît essayez ce qui suit. Vous verrez "0,196553" mais le bon résultat est "0,196554". Parce que la valeur par défaut de la fonction str
est ROUND_HALF_UP.
>>> value=0.196553500000
>>> str("%f" % value).replace(".", ",")