0
votes

imprimer avec un formatage de chaîne f sur float - impossible d'obtenir comment la sortie est générée

print ("{:.{}f}".format(x,y))

1 commentaires

Qu'attendez-vous comme sortie?


3 Réponses :


3
votes

Tout d'abord, numérotons les champs: la chaîne de format '{:. {} f}' équivaut à '{0:. {1} f}' code >.

L'argument à la position 1 est y , qui vaut 0, donc cela équivaut à '{0: .0f}' par substitution. Autrement dit, il formate l'argument à la position 0 (c'est-à-dire x ) comme un flottant, avec 0 décimale.

Le résultat est donc '100' code>, car c'est x à 0 décimale. Vous pouvez essayer ceci avec différentes valeurs de y pour voir les résultats:

>>> '{:.{}f}'.format(100.1205, 0)
'100'
>>> '{:.{}f}'.format(100.1205, 1)
'100.1'
>>> '{:.{}f}'.format(100.1205, 2)
'100.12'
>>> '{:.{}f}'.format(100.1205, 3)
'100.121'
>>> '{:.{}f}'.format(100.1205, 4)
'100.1205'
>>> '{:.{}f}'.format(100.1205, 5)
'100.12050'


0 commentaires

0
votes

Les accolades sont interprétées de l'extérieur vers l'intérieur, c'est-à-dire que les accolades les plus à l'extérieur seront remplacées par le premier argument de format () , c'est-à-dire x , tandis que les accolades les plus internes seront remplacées par le deuxième argument de format () , c'est-à-dire y . Ici, x représentera le flottant à afficher, et y représentera les chiffres significatifs après la décimale. Consultez de nombreux exemples et documents ici a >

Si ce n'est toujours pas clair, je le décomposerais d'abord en une opération de format unique, pour mieux comprendre:

>>> print ("{:.{}f}".format(x,y)
100

Maintenant, tout ce que nous voulons faire est de tout couper chiffres significatifs après la virgule décimale, puis:

>>> print ("{:.1f}".format(x))
100.1

Ou pour couper tous sauf un:

>>> print ("{:.0f}".format(x))
100

Ajout d'un autre paramètre au format () , c'est-à-dire y, vous permet alors de modifier les chiffres significatifs avec la valeur de y.

>>> print ("{}".format(x))
100.1205


0 commentaires

0
votes

x = 100.1205, y = str (x) [6 ]. ici y = 0

tout d'abord comprendre le "{:. {} f}". format (x, y) . ici, nous utilisons le formatage de position de la chaîne. alors nous pouvons voir que x est à la position 0 et y est à la position 1.

nous pouvons considérer "{:. {} f}" comme " {valeur de x: {valeur de y} f} "

maintenant la valeur de x est 100 et la valeur de y est 0 donc la chaîne ressemblera à "{100:. {0} f}". cela signifie qu'il y a 0 ou aucun chiffre après la décimale

lorsque print ("{:. {} f}". format (x, y)) s'exécutera, il affichera "100"


0 commentaires