Seite 1 von 1

Python: decimal.getcontext()

Verfasst: Samstag 25. März 2023, 17:49
von Reiner Becker
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

Re: Python: decimal.getcontext()

Verfasst: Samstag 25. März 2023, 18:11
von __deets__
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')

Re: Python: decimal.getcontext()

Verfasst: Samstag 25. März 2023, 19:19
von Reiner Becker
DANKE für Deine Antwort und

Liebe Grüße
Reiner

Re: Python: decimal.getcontext()

Verfasst: Samstag 25. März 2023, 23:43
von DeaD_EyE
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))