Python `decimal`-modul
Den här artikeln förklarar Pythons decimal
-modul.
Du kan lära dig om grunderna i beräkningar med decimal
-modulen, hantering av precision, avrundning och mer, tillsammans med kodexempel.
YouTube Video
Python decimal
-modul
Pythons decimal
-modul erbjuder decimalaritmetik med fast precision för att undvika fel som uppstår vid flyttalsoperationer. Genom att använda denna modul kan mer tillförlitliga resultat erhållas i finansiella beräkningar eller beräkningar som kräver hög noggrannhet. I situationer där fel från float
-typen är ett problem är decimal
-modulen effektiv.
Grundläggande användning av decimal
-modulen
När du använder decimal
-modulen, importera Decimal
-klassen och hantera värden som instanser av denna klass. Nästa steg är att demonstrera den grundläggande användningen.
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
- Den här koden summerar korrekt 0,1 och 0,2 med hjälp av
Decimal
-klassen. Att utföra samma beräkning medfloat
-typen resulterar i värden med fel, medanDecimal
undviker dessa fel.
Kontrollera precision
decimal
-modulen gör det enkelt att kontrollera precisionen (antal decimaler) i beräkningar. Funktionen getcontext()
kan användas för att hämta den aktuella kontexten och ändra dess inställningar.
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 detta exempel är precisionen satt till 4 siffror för beräkningen av
1 ÷ 3
. MedDecimal
kan du ställa in precisionen för beräkningarna efter behov, vilket gör att du kan anpassa resultaten därefter.
Avrundning
decimal
-modulen inkluderar flera alternativ för att specificera avrundningsmetoder. Följande är exempel på hur man använder olika avrundningsalternativ som ROUND_UP
och 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
- Här används
quantize()
för att avrunda upp och ner tal till en precision på 2 decimaler. Detta möjliggör avrundning samt olika andra typer av avrundningsmetoder.
Operativ kontext och undantag
decimal
-modulen kan också hantera fel och undantag som uppstår under operationer. Anpassad hantering kan definieras för specifika fel, såsom division med noll eller överflöd.
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 detta exempel fångas undantaget
DivisionByZero
när en division med noll inträffar. I modulendecimal
kan fel kontrolleras och anpassas på detta sätt.
Sammanfattning
Modulen decimal
är extremt användbar vid finansiella beräkningar eller situationer där hög precision krävs för att undvika fel vid flyttalsberäkningar. Den stöder ett brett spektrum av applikationer, från grundläggande beräkningar till precisionhantering, avrundning och felhantering. Granska de sammanfattade punkterna nedan och använd modulen decimal
enligt dina specifika behov.
- Noggrann decimalaritmetik är möjlig med klassen
Decimal
. - Du kan fritt justera precision och inställningar för avrundning.
- Undantag såsom division med noll kan hanteras.
Detta gör det möjligt för dig att använda modulen decimal
för att minimera fel i situationer som kräver noggranna numeriska beräkningar.
Du kan följa med i artikeln ovan med hjälp av Visual Studio Code på vår YouTube-kanal. Vänligen kolla även in YouTube-kanalen.