Moduł `decimal` w Pythonie
Ten artykuł wyjaśnia moduł decimal
w Pythonie.
Możesz nauczyć się podstaw obliczeń z modułem decimal
, zarządzania precyzją, zaokrąglania i innych zagadnień, wraz z przykładami kodu.
YouTube Video
Moduł decimal
w Pythonie
Moduł decimal
w Pythonie umożliwia wykonywanie obliczeń dziesiętnych o stałej precyzji, aby unikać błędów występujących przy operacjach na liczbach zmiennoprzecinkowych. Używając tego modułu, można uzyskać bardziej wiarygodne wyniki w obliczeniach finansowych lub wymagających wysokiej dokładności. W sytuacjach, gdy błędy wynikające z użycia typu float
stanowią problem, moduł decimal
okazuje się skuteczny.
Podstawowe użycie modułu decimal
Przy użyciu modułu decimal
należy zaimportować klasę Decimal
i obsługiwać wartości jako instancje tej klasy. Następnie pokażemy podstawowe zastosowanie.
1from decimal import Decimal
2
3# Basic usage example of Decimal
4a = Decimal('0.1')
5b = Decimal('0.2')
6result = a + b
7
8print(f"Result: {result}") # Result: 0.3
- Ten kod dokładnie dodaje 0.1 i 0.2 za pomocą klasy
Decimal
. Wykonanie tego samego obliczenia za pomocą typufloat
powoduje wystąpienie błędów, podczas gdyDecimal
ich unika.
Kontrola precyzji
Moduł decimal
pozwala łatwo kontrolować precyzję (liczbę miejsc dziesiętnych) w obliczeniach. Funkcja getcontext()
może być użyta do pobrania bieżącego kontekstu i modyfikacji jego ustawień.
1from decimal import Decimal, getcontext
2
3# Set the precision
4getcontext().prec = 4 # Set to 4 decimal places
5
6a = Decimal('1') / Decimal('3')
7print(f"Result with precision 4: {a}") # Result with precision 4: 0.3333
- W tym przykładzie precyzja jest ustawiona na 4 cyfry dla obliczenia
1 ÷ 3
. Za pomocąDecimal
możesz ustawić precyzję obliczeń w zależności od potrzeb, co pozwala odpowiednio dostosować wyniki.
Zaokrąglanie
Moduł decimal
zawiera kilka opcji określania metod zaokrąglania. Poniżej znajdują się przykłady użycia różnych metod zaokrąglania, takich jak ROUND_UP
i ROUND_DOWN
.
1from decimal import Decimal, ROUND_UP, ROUND_DOWN
2
3# Example of rounding a number
4a = Decimal('1.2345')
5
6# Rounding up
7rounded_up = a.quantize(Decimal('0.01'), rounding=ROUND_UP)
8print(f"Rounded Up: {rounded_up}") # Rounded Up: 1.24
9
10# Rounding down
11rounded_down = a.quantize(Decimal('0.01'), rounding=ROUND_DOWN)
12print(f"Rounded Down: {rounded_down}") # Rounded Down: 1.23
- Tutaj użyto metody
quantize()
, aby zaokrąglać liczby w górę i w dół do precyzji 2 miejsc dziesiętnych. Pozwala to na stosowanie zaokrąglania oraz różnych innych metod zaokrąglania.
Kontekst operacyjny i wyjątki
Moduł decimal
może również obsługiwać błędy i wyjątki występujące podczas operacji. Można zdefiniować niestandardowe obsługiwanie dla określonych błędów, takich jak dzielenie przez zero lub przepełnienie.
1from decimal import Decimal, getcontext, DivisionByZero
2
3# Exception handling
4getcontext().traps[DivisionByZero] = True
5
6try:
7 result = Decimal('1') / Decimal('0')
8except DivisionByZero:
9 print("Division by zero error caught!")
- W tym przykładzie wyjątek
DivisionByZero
jest przechwytywany, gdy wystąpi dzielenie przez zero. W moduledecimal
błędy można kontrolować i dostosowywać w ten sposób.
Podsumowanie
Moduł decimal
jest niezwykle przydatny w obliczeniach finansowych lub sytuacjach, w których wymagana jest wysoka precyzja, aby uniknąć błędów zmiennoprzecinkowych. Obsługuje szeroki zakres zastosowań, od podstawowych obliczeń po zarządzanie precyzją, zaokrąglanie i obsługę wyjątków. Przejrzyj poniższe podsumowane punkty i korzystaj z modułu decimal
zgodnie z Twoimi potrzebami.
- Dokładna arytmetyka dziesiętna jest możliwa dzięki klasie
Decimal
. - Możesz swobodnie dostosowywać ustawienia precyzji i zaokrąglania.
- Wyjątki, takie jak dzielenie przez zero, mogą być zarządzane.
Pozwala to na wykorzystanie modułu decimal
do minimalizowania błędów w sytuacjach wymagających dokładnych obliczeń numerycznych.
Możesz śledzić ten artykuł, korzystając z Visual Studio Code na naszym kanale YouTube. Proszę również sprawdzić nasz kanał YouTube.