@Jfresearch

Почему float округляет до целого, не воспринимая экспоненты?

Здравствуйте!
Есть список значений (полученный после re.findall), их нужно просуммировать
Хотела перевести во float для сложения, но почему-то output получается с округлением, что делать? Я даже ешки заменила на маленькие на всякий..

Код:
find = re.findall('20,"p":(.*?)}', data)
rep = [i.replace("E-", "e-") for i in find]
b = sum([float(i[0]) for i in rep])


Как выглядит rep:
['5.615780770566875e-5', '5.699531762600249e-5']
Что выводит после float:
[5.0, 5.0]
Что получается в sum:
10

Также проверила вот такой вариант, где просто скопировала и вставила значения:
i = 5.615780770566875e-5
k = 5.615780770566875e-5
g = float(k)
l = float(i)
print(g+l)

Вывод верный:
0.0001123156154113375
  • Вопрос задан
  • 86 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
float(i[0])
Ты выбираешь нулевой (т.е. начальный) символ строки, и только его превращаешь в число, игнорируя остальные.
Как следствие, у тебя '5.615780770566875e-5' обрезается до '5'.
Как чаще всего и бывает, компьютер делает именно то, что ты просишь, а не то, что ты хочешь.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы