it-swarm.com.de

So formatieren Sie eine Gleitkommazahl in Python auf eine feste Breite

Wie formatiere ich eine Gleitkommazahl auf eine feste Breite mit den folgenden Anforderungen:

  1. Führende Null, wenn n <1
  2. Fügen Sie nachfolgende Dezimalnullen hinzu, um die feste Breite aufzufüllen
  3. Dezimalstellen nach fester Breite abschneiden
  4. Richten Sie alle Dezimalstellen aus

Zum Beispiel:

% formatter something like '{:06}'
numbers = [23.23, 0.123334987, 1, 4.223, 9887.2]

for number in numbers:
    print formatter.format(number)

Die Ausgabe wäre wie folgt

  23.2300
   0.1233
   1.0000
   4.2230
9887.2000
263
hobbes3
for x in numbers:
    print "{:10.4f}".format(x)

druckt

   23.2300
    0.1233
    1.0000
    4.2230
 9887.2000

Der Formatbezeichner in den geschweiften Klammern folgt der Python-Format-String-Syntax . Im Einzelnen besteht es in diesem Fall aus den folgenden Teilen:

  • Die leere Zeichenfolge vor dem Doppelpunkt bedeutet "Nehmen Sie das nächste bereitgestellte Argument zu format()" - in diesem Fall das x als einziges Argument.
  • Der Teil 10.4f nach dem Doppelpunkt ist Formatangabe .
  • Das f kennzeichnet die Festkommanotation.
  • Der 10 ist die Gesamtbreite des zu druckenden Feldes, mit Leerzeichen aufgefüllt.
  • Der 4 ist die Anzahl der Nachkommastellen.
426
Sven Marnach

Es ist ein paar Jahre her, dass dies beantwortet wurde, aber ab Python 3.6 ( PEP498 ) können Sie den neuen f-strings verwenden:

numbers = [23.23, 0.123334987, 1, 4.223, 9887.2]

for number in numbers:
    print(f'{number:9.4f}')

Ausdrucke:

  23.2300
   0.1233
   1.0000
   4.2230
9887.2000
45
artomason

In python3 funktioniert Folgendes:

>>> v=10.4
>>> print('% 6.2f' % v)
  10.40
>>> print('% 12.1f' % v)
        10.4
>>> print('%012.1f' % v)
0000000010.4
32
Scott Roberts

Siehe Python 3.x Formatstringsyntax :

IDLE 3.5.1   
numbers = ['23.23', '.1233', '1', '4.223', '9887.2']

for x in numbers:  
    print('{0: >#016.4f}'. format(float(x)))  

     23.2300
      0.1233
      1.0000
      4.2230
   9887.2000
7
readyleader

Sie können das Pad auch mit Nullen belassen. Wenn Sie zum Beispiel möchten, dass number 9 Zeichen lang ist und mit Nullen aufgefüllt bleibt, verwenden Sie:

print('{:09.3f}'.format(number))

Wenn also number = 4.656, lautet die Ausgabe: 00004.656

Für Ihr Beispiel sieht die Ausgabe folgendermaßen aus:

numbers  = [23.2300, 0.1233, 1.0000, 4.2230, 9887.2000]
for x in numbers: 
    print('{:010.4f}'.format(x))

druckt:

00023.2300
00000.1233
00001.0000
00004.2230
09887.2000

Ein Beispiel, wo dies nützlich sein kann, ist, wenn Sie Dateinamen in alphabetischer Reihenfolge korrekt auflisten möchten. Ich habe festgestellt, in einigen Linux-Systemen ist die Anzahl: 1,10,11, .. 2,20,21, ...

Wenn Sie also die erforderliche numerische Reihenfolge in Dateinamen erzwingen möchten, müssen Sie das Feld mit der entsprechenden Anzahl von Nullen belassen.

1
elcymon

In Python 3.

GPA = 2.5
print(" %6.1f " % GPA)

6.1f bedeutet, dass nach den Punkten 1 Stellen angezeigt wird, wenn Sie 2 Stellen nach den Punkten drucken. Sie sollten nur %6.2f so eingeben, dass %6.3f 3 Stellen nach dem Punkt gedruckt werden.

0
Usman Zia