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?
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?
Odpowiedzi:
Ponieważ ten post może być tutaj przez chwilę, zwróćmy również uwagę na składnię Pythona 3:
"{:.2f}".format(5)
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, jak r'...
w przypadku nieprzetworzonego ciągu. Następnie umieszczasz wszystko, co chcesz umieścić w swoim ciągu, zmiennych, liczbach, w nawiasach klamrowych f'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 .
Formatowanie ciągów:
print "%.2f" % 5
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)
round
. Nie należy go używać tylko do wyświetlania .
round(5.0001, 2)
-> 5.0
, nie'5.00'
Najkrótsza składnia Pythona 3:
n = 5
print(f'{n:.2f}')
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
Korzystanie ze składni Pythona 3:
print('%.2f' % number)
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.
eval
co ciąg, skoro można po prostu round
? W każdym razie to nawet nie działa poprawnie, ponieważ jeśli się zasilisz 5
, otrzymasz 5.0
zamiast tego, 5.00
jak chce OP.
d=3
"{:.{}f}".format(5, d)