Python `decimal`-modul

Python `decimal`-modul

Denne artikkelen forklarer Pythons decimal-modul.

Du kan lære om det grunnleggende i beregninger med decimal-modulen, håndtering av presisjon, avrunding og mer, sammen med kodeeksempler.

YouTube Video

Python decimal-modul

Pythons decimal-modul gir desimalberegninger med fast presisjon for å unngå feil som oppstår i flyttallsoperasjoner. Ved å bruke denne modulen kan man oppnå mer pålitelige resultater i finansielle beregninger eller beregninger som krever høy nøyaktighet. I situasjoner der feil fra float-typen er et problem, er decimal-modulen effektiv.

Grunnleggende bruk av decimal-modulen

Når du bruker decimal-modulen, importer Decimal-klassen og håndter verdier som instanser av denne klassen. Deretter vil vi demonstrere den grunnleggende bruken.

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
  • Denne koden legger nøyaktig sammen 0.1 og 0.2 ved hjelp av Decimal-klassen. Å utføre den samme beregningen med float-typen resulterer i verdier med feil, mens Decimal unngår disse feilene.

Kontroll av presisjon

decimal-modulen lar deg enkelt kontrollere presisjonen (antall desimaler) i beregningene. Funksjonen getcontext() kan brukes til å hente den gjeldende konteksten og endre dens innstillinger.

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
  • I dette eksempelet er presisjonen satt til 4 sifre for beregningen av 1 ÷ 3. Ved å bruke Decimal kan du angi presisjonen på beregninger etter behov, slik at du kan justere resultatene deretter.

Avrunding

decimal-modulen inkluderer flere alternativer for å spesifisere avrundingsmetoder. Følgende er eksempler på bruk av ulike avrundingsalternativer som ROUND_UP og 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
  • Her brukes quantize() til å runde opp og ned tall til en presisjon på 2 desimaler. Dette muliggjør avrunding samt ulike andre typer avrundingsmetoder.

Operasjonell kontekst og unntak

decimal-modulen kan også håndtere feil og unntak som oppstår under operasjoner. Spesialhåndtering kan defineres for spesifikke feil, slik som deling på null eller overløp.

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!")
  • I dette eksemplet fanges DivisionByZero-unntaket når en deling på null oppstår. I decimal-modulen kan feil kontrolleres og tilpasses på denne måten.

Sammendrag

Decimal-modulen er svært nyttig i finansielle beregninger eller situasjoner hvor høy presisjon er nødvendig for å unngå flyttallsfeil. Den støtter et bredt spekter av anvendelser, fra grunnleggende beregninger til presisjonshåndtering, avrunding og unntakshåndtering. Gå gjennom de oppsummerte punktene nedenfor og bruk decimal-modulen etter dine spesifikke behov.

  • Nøyaktig desimallaritmetikk er mulig med Decimal-klassen.
  • Du kan fritt justere presisjon og avrundingsinnstillinger.
  • Unntak som deling på null kan håndteres.

Dette gjør det mulig å bruke decimal-modulen for å minimere feil i situasjoner som krever nøyaktige numeriske beregninger.

Du kan følge med på artikkelen ovenfor ved å bruke Visual Studio Code på vår YouTube-kanal. Vennligst sjekk ut YouTube-kanalen.

YouTube Video