Wie konvertiere ich einen String in Python in einen Double?

218

Ich würde gerne wissen, wie man einen String mit Ziffern in einen Double konvertiert.

user46646
quelle
Das ist kein Python-Double. Ein Python Double hat eine unbegrenzte Kapazität.

Antworten:

316
>>> x = "2342.34"
>>> float(x)
2342.3400000000001

Los geht's. Verwenden Sie float (das sich wie ein C-, C ++ - oder Java-Double verhält und dieselbe Genauigkeit hat).

Mungo
quelle
38
Genauer gesagt sind Python-Floats C-Doubles.
Hablabit
1
Bah benutzte Float anstelle von Double. Jetzt ist mein Code um .0000000001 aus, was weh tut
Evorlor
2
Dies funktioniert übrigens auch mit Exponentennotation. Beispiel: float('7.5606e-08')Erzeugt den erwarteten Python-Float.
Drevicko
2
Mit meiner Python (Version 2.7.10), wenn ich zuweisen >>> x = "2342.34" und konvertieren zu schweben >>> float(x) Ich werde 2342.34stattdessen die 2342.3400000000001von @Mongoose berichtet
Bruce_Warrior
Verwenden Sie >>> 0.1 + 0.2für doppelt. >>> 0.1 + 0.6für float.
user1510539
50

Der Dezimaloperator entspricht möglicherweise eher dem, wonach Sie suchen:

>>> from decimal import Decimal
>>> x = "234243.434"
>>> print Decimal(x)
234243.434
Foomip
quelle
2

float(s)Beachten Sie, dass wenn Ihre Zeichenfolgenummer mehr als 15 signifikante Ziffern enthält, diese gerundet wird. In diesen Fällen ist es besser, sie zu verwendenDecimal

Hier finden Sie eine Erklärung und einige Codebeispiele: https://docs.python.org/3/library/sys.html#sys.float_info

user1767754
quelle