2016-06-23 13 views
0

Mit Python 2.7 auf OSX, unterscheidet sich die Ausgabe von x, frage mich, ob es eine Möglichkeit gibt, Python Double/float mehr Präzision zu steuern?Double/Float-Typ-Genauigkeit in Python

x=0.123456789123456789 

print x # output 0.123456789123 

Update 1,

Weird-Ausgang, wenn Dezimal Verwendung

x=0.123456789123456789 
y=decimal.Decimal(x) 
print x," and ", y # output 0.123456789123 and 0.1234567891234567837965840908509562723338603973388671875 

Grüßen, Lin

+3

Verwenden Sie die 'Decimal'-Bibliothek: https://docs.python.org/2/library/decimal.html –

+1

Sie können dies hilfreich finden: http://stackoverflow.com/questions/8885663/how-to -format-a-floating-number-fixed-width-in-python –

+2

Wollen Sie mehr Präzision in der * Ausgabe * (zB durch 'print'), oder mehr Genauigkeit in Ihrer tatsächlichen * Berechnung *? – Evert

Antwort

2

Sie können es mit Dezimal tun - einmal haben Sie die Nummer, die Sie kann mit Präzision spielen

import decimal 
initial_x='0.123456789123456789' 
x=decimal.Decimal(initial_x) 
+0

Danke dmitryro, stimme ab und frage mich, ob ich 'prec' einstellen muss? –

+3

einen Schwimmer an den 'Decimal' Konstruktor bedeutet, dass Sie werfen eine Reihe von Präzision weg, bevor Sie selbst starten. Sie müssen ein Zeichenfolgenliteral verwenden. – user2357112

+1

Sie können es tun, wie decimal.getcontext(). Prec = 20 - siehe ein Beispiel http://learnpythontutorial.blogspot.com/2015/06/python-decimal-module-python-numbers.html – dmitryro