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.
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.
„% 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.
Można również użyć zfill.
str(3.3).zfill(5)
'003.3'
Ta odpowiedź jest bardziej formatowana niż w języku Python. – refi64
Ewentualnie, jeśli chcesz używać .format
:
{:6.1f}
↑ ↑
| |
# digits to pad | | # of decimal places to display
{:6.1f}
Przykład użycia:
'Num: {:6.1f}'.format(number)
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
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