Jak używać modułu dziesiętnego w Python

Jak używać modułu dziesiętnego w Python
W tym artykule obejmie przewodnik po użyciu modułu „dziesiętnego” w Python. Można go użyć do prowadzenia różnych operacji matematycznych na liczbach lub liczbach zmiennoprzecinkowych lub liczbach zawierających punkty dziesiętne. Wszystkie próbki kodu w tym artykule są testowane z Python 3.9.5 na Ubuntu 21.04.

O module dziesiętnym

Moduł dziesiętny, jak sama nazwa wskazuje, może być używany do obsługi liczb o punktach dziesiętnych lub liczbach zmiennoprzecinkowych. Metody zawarte w tym module pomagają w zaokrąglaniu liczb dziesiętnych, konwersji liczb i wykonywanie obliczeń arytmetycznych. Koncentruje się również na precyzji i dokładności, a każda liczba po punkcie dziesiętnym jest uważana za znaczącą. Moduł dziesiętny rozważa liczbę jak 1.40 jako 1.40 i nie jako 1.4. Wykorzystanie modułu dziesiętnego można najlepiej zrozumieć za pomocą przykładów. Niektóre z nich są wyjaśnione poniżej.

Wykonanie podstawowych obliczeń matematycznych za pomocą modułu dziesiętnego

Możesz zadzwonić do konstruktora dziesiętnego, aby przekonwertować numer na typ dziesiętny w Pythonie. Poniższa próbka kodu pokazuje różnicę między podstawowym podziałem matematycznym wykonanym na liczbach typów liczb całkowitych a liczbami typów dziesiętnych.

Od dziesiętnych importu dziesiętnego
A = 10
B = 11
C = A / B
D = dziesiętny (a) / dziesiętny (b)
Drukuj (c, typ (c))
Drukuj (d, typ (d))

Pierwsze oświadczenie importuje klasę dziesiętną z modułu dziesiętnego. Następnie tworzone są dwie zmienne „a” i „b” z niektórymi wartościami. Zmienna „C” przechowuje wartość wytworzoną przez podzielenie zmiennej A przez B. Ten sam proces jest następnie powtarzany przez przekształcenie liczb na obiekty typu dziesiętnego. Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

0.9090909090909091
0.9090909090909090909090909091

Jak widać na powyższym wyjściu, obiekt typu zmiennoprzecinkowy pokazuje liczby z mniejszą precyzją niż obiekt typu dziesiętny, ponieważ używa znacznie bardziej agresywnej metody przybliżenia niż obiekt typu dziesiętny. Domyślnie liczba typów dziesiętnych w Pythonie pokazuje do 28 liczb. Możesz zmienić tę wartość zgodnie z potrzebą, wywołując metodę „getContext” dostępną w module dziesiętnym.

Od dziesiętnych importu dziesiętnego
Z dziesiętnego importu getContext
getContext ().Prec = 50
A = 10
B = 11
C = A / B
D = dziesiętny (a) / dziesiętny (b)
Drukuj (c, typ (c))
Drukuj (d, typ (d))

W powyższej próbce kodu funkcja getContext została zaimportowana, a pozycja precyzyjna została skonfigurowana do 50 pozycji. Metodę getContext można użyć do wyświetlania bieżącego kontekstu w wątku i zmiany niektórych domyślnych parametrów konfiguracyjnych dla modułu dziesiętnego. Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

0.9090909090909091
0.90909090909090909090909090909090909090909090909091

Możesz wykonać dowolny rodzaj obliczeń arytmetycznych z obiektami typu dziesiętnego, które można wykonać z obiektami typu pływakowego w Pythonie. Duża liczba końcowych liczb dziesiętnych w obiektach typu dziesiętnego może przynieść dokładne liczby, które są szczególnie przydatne w finansach, rachunkowości, Mission Critical Scientifics i tak dalej.

Zauważ, że możesz tworzyć liczby typów dziesiętnych z pływaków, liczb całkowitych i ciągów zawierających liczby, wywołując główny konstruktor dziesiętny.

Zaokrąglanie liczb za pomocą modułu dziesiętnego

Moduł dziesiętny jest wyposażony w niektóre predefiniowane tryby zaokrąglania, których można użyć do zaokrąglania liczb z punktami dziesiętnymi. Tryby te nazywane są Round_Floor, Round_ceiling, Round_Half_Down, Round_Half_Up, Round_up, Round_Down, Round_Half_even i Round_05up. Zgodnie z oficjalną dokumentacją Pythona, oto, co robi każdy z tych trybów:

  • Round_Floor: Liczba jest zaokrąglona w kierunku ujemnej nieskończoności.
  • Round_cepiling: Liczba jest zaokrąglona w kierunku nieskończoności lub dodatniej nieskończoności.
  • Runda_half_down: Liczby są zaokrąglone do najbliższej liczby. Jeśli jest remis, liczba jest zaokrąglona w kierunku zero. Więzi to równoległe liczby, które można zaokrąglić zarówno w górę, jak i w dół. Na przykład liczba jak 4.25 może być zaokrąglone w kierunku obu 4.2 i 4.3.
  • Runda_half_up: Liczby są zaokrąglone do najbliższej liczby. Jeśli jest krawat, liczba jest zaokrąglona z zera.
  • Round_up: Numer jest zaokrąglony z zera.
  • Round_down: Numer jest zaokrąglony w kierunku zero.
  • Round_half_even: Liczby są zaokrąglone do najbliższej liczby. Wszelkie więzi są zaokrąglone do najbliższej równej liczby całkowitej.
  • Round_05up: Liczby są zaokrąglone od zera, jeśli ostatni numer to 0 lub 5. Jeśli nie, liczby są zaokrąglone w kierunku zera.

Poniższa próbka kodu pokazuje zachowanie tych trybów.

Import dziesiętny
Od dziesiętnych importu dziesiętnego
Z dziesiętnego importu getContext
getContext ().Prec = 2
getContext ().Zaokrąglanie = dziesiętne.Round_Floor
Drukuj (dziesiętne (3.961) + dziesiętne (0))
getContext ().Zaokrąglanie = dziesiętne.Round_cepiling
Drukuj (dziesiętne (3.961) + dziesiętne (0))
getContext ().Zaokrąglanie = dziesiętne.Round_half_down
Drukuj (dziesiętne (3.705) + dziesiętne (0))
getContext ().Zaokrąglanie = dziesiętne.Round_half_up
Drukuj (dziesiętne (3.775) + dziesiętne (0))
getContext ().Zaokrąglanie = dziesiętne.PODSUMOWANIE
Drukuj (dziesiętne (3.775) + dziesiętne (0))
getContext ().Zaokrąglanie = dziesiętne.ZAOKRĄGLIĆ W DÓŁ
Drukuj (dziesiętne (3.609) + dziesiętny (0))
getContext ().Zaokrąglanie = dziesiętne.Runda_half_even
Drukuj (dziesiętne (3.665) + dziesiętny (0))
getContext ().Zaokrąglanie = dziesiętne.Round_05up
Drukuj (dziesiętne (3.675) + dziesiętny (0))

Próbka kodu jest dość prosta. Precyzja 2 cyfr jest ustawiona do zaokrąglania liczb. Metoda zaokrąglania jest zmieniana poprzez ustawienie wartości obiektu „zaokrąglonego” (część głównego kontekstu). Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe, w którym każda linia odpowiada odpowiedniemu trybowi zaokrąglania:

3.9
4.0
3.7
3.8
3.8
3.6
3.7
3.6

Zaokrąglanie za pomocą metody kwantowej

Możesz także użyć metody „kwantyzacji” dostępnej w module dziesiętnym, aby zaokrąglić liczby. Proces jest identyczny z wyjaśnioną powyżej metodą. Jednak zamiast ustawiać liczby precyzyjne osobno, możesz dostarczyć wykładnik jako argument do metody kwantyzacji, aby zaokrąglić liczbę do określonej pozycji. Poniżej znajduje się próbka kodu.

Import dziesiętny
Od dziesiętnych importu dziesiętnego
zaokrąglony = dziesiętny (3.961).kwantyzm (dziesiętny („1.0 '), zaokrąglanie = dziesiętne.Round_Floor)
Drukuj (zaokrąglony)

Wykładnik „1.0 'został dostarczony do metody kwantyzacji, a metoda zaokrąglania została dostarczona jako dodatkowy argument. Zwróci numer w x.Format x. Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

3.9

Porównanie dwóch liczb dziesiętnych

Możesz porównać dowolne dwa obiekty typu dziesiętnego za pomocą metody „Porównaj” dostępną w module dziesiętnym. Poniższe przykłady pokazują jego użycie.

Od dziesiętnych importu dziesiętnego
Drukuj (dziesiętne (1.2).Porównaj (dziesiętne (1.1)))
Drukuj (dziesiętne (1.0).Porównaj (dziesiętne (1.1)))
Drukuj (dziesiętne (1.0).Porównaj (dziesiętne (1.0)))

Możesz wywołać metodę porównanie w obiekcie typu dziesiętnym i podać drugi numer jako argument. Wartość 0, 1 lub -1 zostanie zwrócona w zależności od porównywanych liczb. Wartość 0 wskazuje, że obie liczby są równe, wartość 1 wskazuje, że pierwsza liczba jest większa niż druga liczba, a wartość -1 wskazuje, że pierwsza liczba jest mniejsza niż druga liczba. Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

1
-1
0

Wniosek

Chociaż moduł dziesiętny jest najczęściej stosowany do kontrolowania precyzji dziesiętnej i do zaokrąglania liczb po punkcie dziesiętnym, ma on inne przydatne metody, które można dalej wykorzystać do manipulowania liczbami dziesiętnymi w celu uzyskania dokładnych wyników obliczeń arytmetycznych. Podstawowe użycie modułu dziesiętnego zostało omówione w tym artykule i powinno wystarczyć w większości sytuacji. Ale zawsze możesz przeczytać więcej o zaawansowanych metodach oficjalnej dokumentacji Pythona.