J'ai un nombre à virgule flottante, disons 135.12345678910
. Je veux concaténer cette valeur en 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
d' numvar
être mon numéro d'origine. Y a-t-il un moyen facile de faire ceci?
python
string
floating-point
Pauliwago
la source
la source
Réponses:
Avec Python <3 (par exemple 2.6 [voir les commentaires] ou 2.7), il y a deux façons de le faire.
Mais notez que pour les versions Python supérieures à 3 (par exemple 3.2 ou 3.3), la deuxième option est préférée .
Pour plus d'informations sur la deuxième option, je suggère ce lien sur le formatage des chaînes de la documentation Python .
Et pour plus d'informations sur la première option, ce lien suffira et contient des informations sur les différents drapeaux .
Python 3.6 (officiellement publié en décembre 2016), a ajouté la
f
chaîne littérale, voir plus d'informations ici , qui étend lastr.format
méthode (utilisation d'accolades pourf"{numvar:.9f}"
résoudre le problème d'origine), c'est-à-direrésout le problème. Consultez la réponse de @ Or-Duan pour plus d'informations, mais cette méthode est rapide .
la source
newer_method_string = "{:.9f}".format(numvar)
- notez la nécessité:
de séparer le champ et la mise en forme. J'ai quand même testé ceci sur 2.7.5.newer_method_string = "{0:.9f}".format(numvar)
- notez le 0 requis pour le champ_nom de cette ancienne version.Python 3.6
Juste pour être clair, vous pouvez utiliser le formatage de chaîne de caractères . Cela a presque la même syntaxe que la
format
méthode, mais la rend un peu plus agréable.Exemple:
Plus de lecture sur la nouvelle chaîne f:
Voici un diagramme des temps d'exécution des différentes méthodes testées (à partir du dernier lien ci-dessus):
la source
Utilisation
round
:la source
Ce n'est pas l'impression qui fait le formatage, c'est une propriété des chaînes, donc vous pouvez simplement utiliser
la source
Dans le cas où la précision n'est pas connue avant l'exécution, cette autre option de formatage est utile:
la source
.format
-method, notez que cela peut aussi se faire par des arguments de nidification comme ceci:'{:.{n}f}'.format(numvar,n=n)
.Pour définir la précision avec 9 chiffres, obtenez:
Précision de retour avec 2 chiffres:
Renvoie la précision avec 2 chiffres et une valeur convertie flottante:
la source
La
str
fonction a un bug. S'il vous plaît essayez ce qui suit. Vous verrez «0,196553» mais la sortie de droite est «0,196554». Parce que lastr
valeur par défaut de la fonction est ROUND_HALF_UP.la source
.
vs.,
? Et en quoi est-ce pertinent pour la question de Pauliwago?