Moduł `decimal` w Pythonie

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ą typu float powoduje wystąpienie błędów, podczas gdy Decimal 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 module decimal 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.

YouTube Video