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
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
Antworten:
Los geht's. Verwenden Sie float (das sich wie ein C-, C ++ - oder Java-Double verhält und dieselbe Genauigkeit hat).
quelle
float('7.5606e-08')
Erzeugt den erwarteten Python-Float.>>> x = "2342.34"
und konvertieren zu schweben>>> float(x)
Ich werde2342.34
stattdessen die2342.3400000000001
von @Mongoose berichtet>>> 0.1 + 0.2
für doppelt.>>> 0.1 + 0.6
für float.Der Dezimaloperator entspricht möglicherweise eher dem, wonach Sie suchen:
quelle
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
quelle