2017-12-30 3 views
1

Ich muss 2 ganze Zahlen teilen und das Ergebnis auf mindestens 76 Stellen der Genauigkeit anzeigen. Zum Beispiel, wenn ich 1 durch 3 teile, muss ich 0,333333333333 ... mit 76 "3" s anzeigen. Wenn ich in Python teile und 76 Nachkommastellen anzeigen lasse, gibt es mir nicht genug Stellen für die Genauigkeit, dh einige Ziffern sind falsch. Ich tat:Python Genauigkeit beim Teilen

print(format(1/3,".76f")) 

Das gab mir das Ergebnis: 0,3333333333333333148296162562473909929394721984863281250000000000000000000000, die offensichtlich nicht gleich 1/3 ist. Ich benutze Python 3. Gibt es eine bessere Möglichkeit, Dezimalziffern zu teilen und anzuzeigen? Jede Hilfe würde sehr geschätzt werden!

+4

Verwenden 'decimal.Decimal'? – Blckknght

+0

Danke! Ich habe es versucht, aber es gibt mir auch nicht genug Genauigkeitsziffern. BTW, dies ist eine USACO Trainingsfrage, "Fracdec". –

+0

Hat es nicht? Aus der [Dokumentation] (https://docs.python.org/3/library/decimal.html): "Im Gegensatz zu hardwarebasierten binären Fließkommawerten hat das Dezimal-Modul eine ** vom Benutzer änderbare Genauigkeit ** (standardmäßig 28 Stellen)) das kann so groß sein, wie für ein gegebenes Problem benötigt) " – usr2564301

Antwort

3

Sie wollen 76 Ziffern richtig?

from decimal import * 
getcontext().prec = 76 
Decimal(1)/Decimal(3) 

Ausgabe

Decimal('0.3333333333333333333333333333333333333333333333333333333333333333333333333333') 
+0

Vielen Dank! Ich habe es versucht und es hat funktioniert. –

+0

Können 'Decimal'-Objekte durch json weitergegeben werden? – AlanSTACK

+0

Wizardey: https://Stackoverflow.com/q/1960516/2750819 – kshikama

Verwandte Themen