Python: decimal.getcontext()

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Reiner Becker
User
Beiträge: 2
Registriert: Samstag 25. März 2023, 17:40

Hallo und guten Tag,

ich verwende Python IDLE 3.9 und bei mir funktioniert der Befehl decimal.getcontext() nicht.
Ich erhalte die Fehlermeldung: Modul nicht aufrufbar.

Ein Beispiel aus dem Lehrbuch Verlag Rheinwerk, Python 3:

import decimal
c = decimal.getcontext()
c.prec = 3
Decimal("1.23456789") * Decimal("2.3456789")

Daraufhin erfolgen diverse Fehlermeldungen, z. B. 'module' not callable.

Wie ist das erklärbar?
Normalerweise ist doch getcontext() ein gültiges Attribut von Decimal ?....

Über eine Antwort wäre ich dankbar.

Liebe Grüße
Reiner
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Der offensichtliche Fehler: du importierst decimal, aber rufst dann nur Decimal statt decimal.Decimal auf. Das hier funktioniert bei mir problemlos:

Code: Alles auswählen

17:32 $ python3
Python 3.10.6 (main, Mar 10 2023, 10:55:28) [GCC 11.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import decimal
>>> c = decimal.getcontext()
>>> c.prec = 3
>>> decimal.Decimal("1.23456789") * decimal.Decimal("2.3456789")
Decimal('2.90')
Reiner Becker
User
Beiträge: 2
Registriert: Samstag 25. März 2023, 17:40

DANKE für Deine Antwort und

Liebe Grüße
Reiner
Benutzeravatar
DeaD_EyE
User
Beiträge: 1016
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Danach ist zwar nicht gefragt worden, aber ich gebe trotzdem mal meinen Senf dazu.

Es gibt auch Fälle, bei denen man nur für eine Berechnung die Präzision erhöhen möchte und alles andere mit den vorgegebenen Standards ablaufen soll.

Code: Alles auswählen

from decimal import Decimal, localcontext

# Kontext-Manager
with localcontext(prec=1_000):
    # Hier gilt der lokale Kontext
    print("Innerhalb des with-blocks:")
    print(Decimal(1) / Decimal(3))

# Hier nicht mehr
print()
print("Außerhalb des lokalen Kontextes:")
print(Decimal(1) / Decimal(3))
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Antworten