Python Mehr Nachkommastellen bei Float Zahlen?
Hi
Ich möchte eine beliebig hohe Zahl von Nachkommastellen berechnen, speichern und ausgeben können, allerdings rundedt Python immer von allein auf 16 Stück ab. Wie kann ich dieses Runden umgehen, sodass mind 50 Nachkommastellen angezeigt werden?
VG
2 Antworten
Warum es mit "float" nicht geht, hat NoHumanBeing ja bereits erklärt, aber mit "decimal" läufts: https://docs.python.org/2/library/decimal.html
Beispiel:
import decimal
decimal.getcontext().prec=50
a = decimal.Decimal('2.0')
b = decimal.Decimal('0.5')
c = a**b
print c
Ausgabe:
1.4142135623730950488016887242096980785696718753769
Nur dann, wenn du ein "nicht standard Python" hast... ;)
Mit anderen Worten: Keine weiteren Pakete nötig.
Zunächst einmal möchte ich anmerken, dass dies keine Einschränkung ist, die von der Programmiersprache Python herrührt, sondern eine, die bereits in der Gleitkommaeinheit Deines Prozessors vorhanden ist.
64-Bit Gleitkommazahlen haben eine Genauigkeit von 15 - 17 Dezimalstellen, übrigens nicht nur bei der Ausgabe, sondern bei jeder Rechenoperation.
Wenn Du höhere Genauigkeit brauchst, musst Du spezielle Bibliotheken benutzen, welche die Verarbeitung der "größeren" Gleitkommazahlen, die der Prozessor direkt ja nicht verarbeiten kann, in mehreren Maschinenschritten in Software umsetzen.
Brauch ich für decimal irgendwelche nucht-Standart Packete?