Lista typu Decimal

Lista typu Decimal
S4
  • Rejestracja:ponad 6 lat
  • Ostatnio:prawie 6 lat
  • Postów:37
0

Witam, znalazłem zadanie w którym mam wygenerować liste w typie Decimal. Widzę jakieś informacje o Decimal do SQL ale do pythona tylko jedno takie średnio opisane. Może ktoś powiedzieć jak dokładnie zmienić typ plików na Decimal? Bo chyba typowe int czy str przed nawiasem niewiele pomoże.

Zobacz pozostały 1 komentarz
S4
Dokładnie o to. Też znalazłem ten opis. Tylko nie za bardzo wiem jak mam go użyć. Działa jak intiger?
Niezły bełkot :D
lion137
Wiemy co ma na myśli, ale nie wiemy jeszcze o co mu chodzi :-D
S4
Dokładnie chodzi o to czy mogę Decimal wrzucić w pętle itp.
lion137
Oczywiście, że Możesz, Poczytaj dokumentacje, tam jest wszystko.
grski
  • Rejestracja:ponad 9 lat
  • Ostatnio:9 miesięcy
  • Postów:245
0

Doprecyzujesz o co ci chodzi?
O tworzenie listy z decimalami w środku? something = [Decimal('1.23213'), Decimal('123.32131')

O to by iterować po decimalu? To by default nie bardzo, możesz za to scastować decimala do str i po str iterować.


Napisałem książkę - Programowanie z Górskim: Junior Python Developer
Pora na następny krok na drodze po pierwszą pracę w it i WCALE-NIE-MITYCZNE #programista40k? Zapraszam.
S4
Stworzyć liste liczb do 2 do 5.5 co 0.5.
grski
[Decimal(x)/Decimal(10) for x in range(20, 56, 5)] jeśli chcesz by była to lista Decimali [x/10 for x in range(20,56,5)] jeśli mają być to floaty
S4
A to czy typowane jest we float czy w decimal ma wieksze znaczenie? Bo jak tak patrzę, większej różnicy nie ma
grski
@szopen469: jest bardzo duża różnica - Decimal działa na typie Decimal, float na floacie co to znaczy? We floacie masz floating point imprecision, natomiast w decimalu niekoniecznie. czyli we floacie 0.1 + 0.1 nie musi się równać dokładnie 0.2, a np. 0.200000003123 natomiast w decimalu Decimal(0.1) + Decimal(0.1) równa się zawsze dokładnie Decimal(0.2) Lepiej używać Decimal
S4
Czyli główna różnica to dokładność obliczeń. Okej, powoli łapie
lion137
  • Rejestracja:około 8 lat
  • Ostatnio:21 minut
  • Postów:4935
1

To swoje range Musisz napisać:

Kopiuj
def my_range(st, end, step):
	s = Decimal(st)
	e = Decimal(end)
	st = Decimal(step)
	yield s
	while s < e:
		s = s + st
		yield s
	
	
if __name__ == '__main__':
	getcontext().prec = 128
	g = my_range(1, 3, 0.5)
	a_l = list(g)
	print(a_l)

Edit: Widzę ``list comprehension``` w akcji, łądniejszy kod, tyle, że przy częstszym używaniu lepiej jest zamknąć w funkcji.


edytowany 1x, ostatnio: lion137
S4
Czym w ostateczności różni się od listy grsk? Wynik końcowy i tak jest w Decimal? Czy to po prostu zawodowa perfekcja?
lion137
Różni si.ę tym, że to jest generator (strumień), czyli Możesz sobie stworzyć takie range od 1 do miliarda w zerowym czasie, potem dobierać już elementy w czasie n. Czyli, dla dużych struktur, preferowany sposób.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.