Python `decimal`-modul

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 med float-typen resulterar i värden med fel, medan Decimal 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. Med Decimal 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 modulen decimal 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.

YouTube Video