Powiedzmy, że mam liczbę zmiennoprzecinkową 135.12345678910
. Chcę połączyć tę wartość z ciągiem, ale chcę tylko 135.123456789
. Dzięki drukowaniu mogę to łatwo zrobić, wykonując coś takiego:
print "%.9f" % numvar
z numvar
czym mój oryginalny numer. Czy jest na to łatwy sposób?
python
string
floating-point
pauliwago
źródło
źródło
Odpowiedzi:
W Pythonie <3 (np. 2.6 [patrz komentarze] lub 2.7) można to zrobić na dwa sposoby.
Należy jednak pamiętać, że w przypadku wersji Pythona powyżej 3 (np. 3.2 lub 3.3) preferowana jest opcja druga .
Aby uzyskać więcej informacji na temat opcji drugiej, sugeruję ten link na temat formatowania ciągów z dokumentacji Pythona .
Aby uzyskać więcej informacji na temat opcji pierwszej, ten link wystarczy i zawiera informacje o różnych flagach .
Python 3.6 (oficjalnie wydany w grudniu 2016 r.), Dodał
f
dosłowny ciąg znaków, zobacz więcej informacji tutaj , co rozszerzastr.format
metodę (użycie nawiasów klamrowych w taki sposób, żef"{numvar:.9f}"
rozwiązuje pierwotny problem), czylirozwiązuje problem. Sprawdź odpowiedź @ Or-Duan, aby uzyskać więcej informacji, ale ta metoda jest szybka .
źródło
newer_method_string = "{:.9f}".format(numvar)
- zwróć uwagę na konieczność:
oddzielenia pola i formatowania. I tak przetestowałem to w wersji 2.7.5.newer_method_string = "{0:.9f}".format(numvar)
- zwróć uwagę na wymagane 0 dla nazwa_pola dla tej starszej wersji.Python 3.6.0
Żeby było jasne, możesz użyć formatowania f-stringów . Ma prawie taką samą składnię jak
format
metoda, ale czyni ją nieco ładniejszą.Przykład:
Więcej informacji na temat nowego ciągu f:
Oto diagram czasów wykonania różnych testowanych metod (z ostatniego linku powyżej):
źródło
Używając
round
:źródło
To nie print wykonuje formatowanie, jest to właściwość ciągów, więc możesz po prostu użyć
źródło
W przypadku, gdy dokładność nie jest znana przed uruchomieniem, ta inna opcja formatowania jest przydatna:
źródło
.format
-method pamiętać, że może to być również wykonane przez lęgowych argumentów tak:'{:.{n}f}'.format(numvar,n=n)
.Aby ustawić precyzję za pomocą 9 cyfr, pobierz:
Precyzja zwrotu z 2 cyframi:
Zwróć precyzję z 2 cyframi i zmiennoprzecinkową wartością przekonwertowaną:
źródło
str
Funkcja ma błąd. Spróbuj wykonać następujące czynności. Zobaczysz „0,196553”, ale prawidłowe wyjście to „0,196554”. Ponieważstr
domyślną wartością funkcji jest ROUND_HALF_UP.źródło
.
vs.,
? A jakie to ma znaczenie dla pytania Pauliwago?