Jak przekonwertować ciąg znaków na podwójne w Pythonie?


Odpowiedzi:


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

Proszę bardzo. Użyj float (który zachowuje się jak i ma taką samą precyzję jak podwójne C, C ++ lub Java).


38
Lub dokładniej, zmiennoprzecinkowe Python są podwójnymi C.
habnabit

1
Bah użył pływaka zamiast podwójnego. teraz mój kod jest wyłączony przez .0000000001, co boli
Evorlor

2
nawiasem mówiąc, działa to również z notacją wykładniczą. np .: float('7.5606e-08')produkuje oczekiwany zmiennoprzecinkowy python.
drevicko

2
Z moim pytonem (wersja 2.7.10), kiedy przypisuję >>> x = "2342.34" i konwertuję na zmiennoprzecinkowe >>> float(x) , otrzymuję 2342.34zamiast tego 2342.3400000000001zgłoszenie @Mongoose
Bruce_Warrior

Użyj >>> 0.1 + 0.2do podwójnego. >>> 0.1 + 0.6do pływaka.
user1510539,

50

Operator dziesiętny może być bardziej zgodny z tym, czego szukasz:

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.