2015-12-15 8 views
6

Ich habe eine große Dezimalzahl, wie die Quadratwurzel von 2, und ich möchte die ersten 100 Dezimalziffern anzeigen. Float unterstützt diese Funktion jedoch nicht: 1.4142135623730951454746218587388284504413604736328125000000000000000000000000000000000000000000000000100-stellige Fließkomma-Python

Was ist der beste Weg, dies zu tun? Ich möchte nichts importieren, vorzugsweise

+4

Ich fürchte, finden Sie gehen 'dezimal haben zu importieren .Dezimal'. – roippi

+0

Werfen Sie einen Blick auf diese Website: http://floating-point-gui.de/ – SethMMorton

+0

Das MPMath-Modul wird auch dafür funktionieren, http://mpmath.org/ –

Antwort

6

Wenn Ihre Anforderung für die Genauigkeit 100 Dezimalstellen ist, denke ich, dass Sie decimal.Decimal verwenden müssen.

Die float in Python ist nicht für diese Art der genauen Berechnung ausgelegt.

decimal.Decimal Verwendung ist fast so einfach wie float, können Sie +, -, *, / und einige andere häufig direkt verwendet Berechnungen zwischen jedem decimal.Decimal ohne Rücksicht.

Auch decimal.Decimal unterstützt die Genauigkeit der Einrichtung direkt möchten Sie:

>>> from decimal import getcontext, Decimal 
>>> getcontext().prec = 6 
>>> Decimal(1)/Decimal(7) 
Decimal('0.142857') 
>>> getcontext().prec = 28 
>>> Decimal(1)/Decimal(7) 
Decimal('0.1428571428571428571428571429') 

Sie mehr Detail in diesem Python2 API oder Python3 API

+0

Sie sollten Strings übergeben –

+0

@ IgnacioVazquez-Abrams: Nein, es ist wirklich Fließkomma, wie die [docs] (https://docs.python.org/2/library/decimal.html) sagen: "Das Dezimal-Modul bietet Unterstützung für die Dezimal-Gleitkomma-Arithmetik." –

+0

Kann es aber auch Quadratwurzeln machen? – plugwash