Mam funkcję pobierającą argumenty typu float (zwykle liczby całkowite lub dziesiętne z jedną cyfrą znaczącą) i muszę wyprowadzić wartości w ciągu z dwoma miejscami dziesiętnymi (5 -> 5,00, 5,5 -> 5,50 itd.). Jak mogę to zrobić w Pythonie?
python
string
programming-languages
floating-point
MarathonStudios
źródło
źródło
d=3
"{:.{}f}".format(5, d)
formatowanie f-stringów :
To było nowe w Pythonie 3.6 - ciąg znaków jest jak zwykle umieszczany w cudzysłowie, poprzedzony
f'...
w taki sam sposób, jakr'...
w przypadku nieprzetworzonego ciągu. Następnie umieszczasz wszystko, co chcesz umieścić w swoim ciągu, zmiennych, liczbach, w nawiasach klamrowychf'some string text with a {variable} or {number} within that text'
- a Python ocenia tak, jak w przypadku poprzednich metod formatowania ciągów, z wyjątkiem tego, że ta metoda jest znacznie bardziej czytelna.>>> foobar = 3.141592 >>> print(f'My number is {foobar:.2f} - look at the nice rounding!') My number is 3.14 - look at the nice rounding!
Jak widać w tym przykładzie, formatujemy z miejscami dziesiętnymi w podobny sposób jak poprzednie metody formatowania ciągów.
NB
foobar
może być liczbą, zmienną, a nawet wyrażeniem npf'{3*my_func(3.14):02f}'
.Idąc dalej, z nowym kodem wolę f-stringi niż typowe metody% s lub str.format (), ponieważ f-stringi mogą być dużo bardziej czytelne i często są dużo szybsze .
źródło
Formatowanie ciągów:
print "%.2f" % 5
źródło
math.floor
,math.ceil
lubround
Formatowanie ciągów:
a = 6.789809823 print('%.2f' %a)
LUB
print ("{0:.2f}".format(a))
Funkcji Round można użyć:
print(round(a, 2))
Zaletą round () jest to, że możemy zapisać ten wynik w innej zmiennej, a następnie użyć go do innych celów.
b = round(a, 2) print(b)
źródło
round
. Nie należy go używać tylko do wyświetlania .round(5.0001, 2)
->5.0
, nie'5.00'
Korzystanie z formatowania ciągów w języku Python.
>>> "%0.2f" % 3 '3.00'
źródło
Najkrótsza składnia Pythona 3:
n = 5 print(f'{n:.2f}')
źródło
Jeśli faktycznie chcesz zmienić samą liczbę zamiast wyświetlać ją w inny sposób, użyj formatu ()
Sformatuj go do 2 miejsc po przecinku:
format(value, '.2f')
przykład:
>>> format(5.00000, '.2f') '5.00'
źródło
Wiem, że to stare pytanie, ale sam nie mogłem znaleźć odpowiedzi. Oto co wymyśliłem:
Python 3:
>>> num_dict = {'num': 0.123, 'num2': 0.127} >>> "{0[num]:.2f}_{0[num2]:.2f}".format(num_dict) 0.12_0.13
źródło
Korzystanie ze składni Pythona 3:
print('%.2f' % number)
źródło
Jeśli chcesz uzyskać wartość zmiennoprzecinkową z dwoma miejscami po przecinku, ograniczoną w momencie wywołania wejścia,
Sprawdź to ~
a = eval(format(float(input()), '.2f')) # if u feed 3.1415 for 'a'. print(a) # output 3.14 will be printed.
źródło
eval
co ciąg, skoro można po prosturound
? W każdym razie to nawet nie działa poprawnie, ponieważ jeśli się zasilisz5
, otrzymasz5.0
zamiast tego,5.00
jak chce OP.