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 medfloat
-typen resulterer i verdier med feil, mensDecimal
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 å brukeDecimal
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. Idecimal
-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.