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
Odpowiedzi:
Proszę bardzo. Użyj float (który zachowuje się jak i ma taką samą precyzję jak podwójne C, C ++ lub Java).
źródło
float('7.5606e-08')
produkuje oczekiwany zmiennoprzecinkowy python.>>> x = "2342.34"
i konwertuję na zmiennoprzecinkowe>>> float(x)
, otrzymuję2342.34
zamiast tego2342.3400000000001
zgłoszenie @Mongoose>>> 0.1 + 0.2
do podwójnego.>>> 0.1 + 0.6
do pływaka.Operator dziesiętny może być bardziej zgodny z tym, czego szukasz:
źródło
Pamiętaj, że jeśli Twój ciąg znaków zawiera więcej niż 15 cyfr znaczących
float(s)
, zaokrągli go. W takich przypadkach lepiej jest użyćDecimal
Oto wyjaśnienie i kilka przykładów kodu: https://docs.python.org/3/library/sys.html#sys.float_info
źródło