Python `decimal`-modul

Python `decimal`-modul

Denne artikel forklarer Python's decimal-modul.

Du kan lære om det grundlæggende i beregninger med decimal-modulet, håndtering af præcision, afrunding og mere, sammen med kodeeksempler.

YouTube Video

Python decimal-modul

Python's decimal-modul giver fast-præcisions decimale aritmetiske operationer for at undgå fejl, der opstår ved flydekommaberegninger. Ved at bruge dette modul kan mere pålidelige resultater opnås i finansielle beregninger eller beregninger, der kræver høj nøjagtighed. I situationer, hvor fejl fra float-typen er et problem, er decimal-modulet effektivt.

Grundlæggende brug af decimal-modulet

Når du bruger decimal-modulet, importer Decimal-klassen og håndter værdier som instanser af denne klasse. Dernæst demonstrerer vi den grundlæggende brug.

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 kode lægger præcist 0.1 og 0.2 sammen ved hjælp af Decimal-klassen. At udføre den samme beregning med float-typen resulterer i værdier med fejl, mens Decimal undgår disse fejl.

Kontrol af præcision

Decimal-modulet giver dig mulighed for nemt at kontrollere præcisionen (antal decimalsteder) i beregninger. Funktionen getcontext() kan bruges til at hente den nuværende kontekst og ændre dens indstillinger.

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 eksempel er præcisionen sat til 4 cifre for beregningen af 1 ÷ 3. Ved at bruge Decimal kan du indstille præcisionen for beregninger efter behov og dermed tilpasse resultaterne.

Afrunding

Decimal-modulet inkluderer flere muligheder for at angive afrundingsmetoder. Følgende er eksempler på brug af forskellige afrundingsmuligheder 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 bruges quantize() til at runde tal op og ned til en præcision på 2 decimalsteder. Dette muliggør afrunding samt forskellige andre typer afrundingsmetoder.

Operationel kontekst og undtagelser

Decimal-modulet kan også håndtere fejl og undtagelser, der opstår under operationer. Specifik fejl, såsom division med nul eller overflow, kan håndteres individuelt.

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 eksempel bliver undtagelsen DivisionByZero fanget, når en division med nul opstår. I decimal-modulet kan fejl kontrolleres og tilpasses på denne måde.

Sammendrag

Decimal-modulet er ekstremt nyttigt i finansielle beregninger eller i situationer, hvor høj præcision er nødvendig for at undgå flydende punktfejl. Det understøtter en bred vifte af anvendelser, fra basale beregninger til præcisionshåndtering, afrunding og undtagelseshåndtering. Gennemgå de opsummerede punkter nedenfor og brug decimal-modulet i henhold til dine specifikke behov.

  • Præcis decimalaritmetik er muligt med Decimal-klassen.
  • Du kan frit justere præcision og afrundingsindstillinger.
  • Undtagelser såsom division med nul kan håndteres.

Dette giver dig mulighed for at bruge decimal-modulet til at minimere fejl i situationer, der kræver præcise numeriske beregninger.

Du kan følge med i ovenstående artikel ved hjælp af Visual Studio Code på vores YouTube-kanal. Husk også at tjekke YouTube-kanalen.

YouTube Video