Jak sformatować liczbę zmiennoprzecinkową na stałej szerokości, spełniając następujące wymagania:
- Początkowe zero, jeśli n <1
- Dodaj końcowe zera dziesiętne, aby wypełnić stałą szerokość
- Obcinaj cyfry dziesiętne poza ustaloną szerokość
- Wyrównaj wszystkie przecinki dziesiętne
Na przykład:
% formatter something like '{:06}'
numbers = [23.23, 0.123334987, 1, 4.223, 9887.2]
for number in numbers:
print formatter.format(number)
Wyjście byłoby jak
23.2300
0.1233
1.0000
4.2230
9887.2000
python
string
numbers
number-formatting
hobbes3
źródło
źródło
10.4
oznacza szerokość 10 znaków i dokładność 4 miejsc po przecinku.10
minimalna szerokość pola, tj. minimalna długość drukowanego ciągu. Liczby są domyślnie wyrównane do prawej i wypełnione spacjami - więcej informacji można znaleźć w dokumentacji .("%0.4f" % x).rjust(10)
"%10.4f" % x
. W Pythonie 2.6 możesz także użyć"{0:10.4f}".format(x)
.Minęło kilka lat, odkąd udzielono na nie odpowiedzi, ale od wersji Python 3.6 ( PEP498 ) można było używać nowego
f-strings
:Wydruki:
źródło
W python3 działa:
źródło
%
formatowanie jest najstarszą metodą formatowania. Z kilku powodów preferowane jest użyciestr.format
lub . Wcześniej, kiedy było tylko , ludzie mieli pewne powody, ale naprawili tę dziurę. formatuj mini-dokumenty , przykłady str.format z dokumentów i przykłady literałów f-string w dokumentachf-strings
%
str.format
f-strings
Zobacz składnię ciągów formatu Python 3.x :
źródło
Możesz także zostawić pad z zerami. Na przykład, jeśli chcesz
number
mieć 9 znaków długości, po lewej stronie wypełnij zerami:print('{:09.3f}'.format(number))
Zatem jeśli
number = 4.656
wynikiem jest:00004.656
W twoim przykładzie wynik będzie wyglądał następująco:
drukuje:
Jednym z przykładów, w których może to być przydatne, jest poprawne wyświetlanie nazw plików w kolejności alfabetycznej. Zauważyłem w niektórych systemach Linux, liczba to: 1,10,11, .. 2,20,21, ...
Dlatego jeśli chcesz wymusić niezbędną kolejność numeryczną w nazwach plików, musisz zostawić pad z odpowiednią liczbą zer.
źródło
W Python 3.
6.1f
oznacza, że po kropkach 1 cyfra pokazuje, jeśli drukujesz 2 cyfry po kropkach, powinieneś tylko%6.2f
tak, aby%6.3f
3 cyfry były drukowane po kropce.źródło
Potrzebowałem czegoś podobnego do tablic. To mi pomogło
źródło