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 medfloat
-typen resulterer i værdier med fejl, mensDecimal
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 brugeDecimal
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. Idecimal
-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.