Lista typu Decimal

Odpowiedz Nowy wątek
2019-03-13 17:59
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.

Dokładnie o to. Też znalazłem ten opis. Tylko nie za bardzo wiem jak mam go użyć. Działa jak intiger? - szopen469 2019-03-13 18:24
Niezły bełkot :D - Mózg 2019-03-13 18:26
Wiemy co ma na myśli, ale nie wiemy jeszcze o co mu chodzi :-D - lion137 2019-03-13 18:26
Dokładnie chodzi o to czy mogę Decimal wrzucić w pętle itp. - szopen469 2019-03-13 18:31
Oczywiście, że Możesz, Poczytaj dokumentacje, tam jest wszystko. - lion137 2019-03-13 18:36

Pozostało 580 znaków

2019-03-13 18:39

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ć.

Stworzyć liste liczb do 2 do 5.5 co 0.5. - szopen469 2019-03-13 18:41
[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 - grski 2019-03-13 18:46
A to czy typowane jest we float czy w decimal ma wieksze znaczenie? Bo jak tak patrzę, większej różnicy nie ma - szopen469 2019-03-13 18:58
@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 - grski 2019-03-13 19:03
Czyli główna różnica to dokładność obliczeń. Okej, powoli łapie - szopen469 2019-03-13 19:11

Pozostało 580 znaków

2019-03-13 18:58
1

To swoje range Musisz napisać:

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, 2019-03-13 19:06
Czym w ostateczności różni się od listy grsk? Wynik końcowy i tak jest w Decimal? Czy to po prostu zawodowa perfekcja? - szopen469 2019-03-13 19:16
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. - lion137 2019-03-13 19:22

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0