2009-09-15 11 views
15

Chcę podać wartości procentowe, aby zawsze były 3 jednostki przed miejscem dziesiętnym. Z ints mógłbym użyć '% 03d' - czy istnieje odpowiednik dla pływaków?Pływające pytonowe podkładki

"% .3f" działa po przecinku, ale "% 03f" nie robi nic.

Odpowiedz

33

„% 03.1f” działa (1 może być dowolna liczba, lub pusty ciąg znaków):

>>> "%06.2f"%3.3 
'003.30' 

>>> "%04.f"%3.2 
'0003' 

Należy zauważyć, że szerokość pola zawiera przecinek i cyfry ułamkowe.

+3

Jeśli wartość jest ujemna, wiodący „- "zużyje jedną z wartości szerokości pola -"% 06.2f "% -3.3 daje" -03.30 ", więc jeśli Jeśli masz 3 cyfry, nawet jeśli są ujemne, musisz dodać jeszcze jeden do szerokości pola. Możesz to zrobić, używając wartości pola "*" i przekazać obliczoną wartość: value = -3,3; print "% 0 * .2f"% (6+ (wartość <0), wartość) – PaulMcG

+0

Oto co oznaczało @PaulMcGuire, ale używając 'format':' wartość = -3.3; print "{t: 0 {format} .2f}" .format (format = 6 + (wartość <0), t = wartość) '. – Adobe

7

Można również użyć zfill.

str(3.3).zfill(5) 
'003.3' 
+0

Ta odpowiedź jest bardziej formatowana niż w języku Python. – refi64

4

Ewentualnie, jeśli chcesz używać .format:

   {:6.1f} 
       ↑ ↑ 
       | | 
# digits to pad | | # of decimal places to display 

Copypasta: {:6.1f}

Przykład użycia:

'Num: {:6.1f}'.format(number) 
Powiązane problemy