Почему я получаю странный десятичный результат при добавлении чисел с плавающей запятой в Python? [дубликат] ⇐ Python

Программы на Python
Anonymous
Почему я получаю странный десятичный результат при добавлении чисел с плавающей запятой в Python? [дубликат]

Сообщение Anonymous »

Итак, я что-то делал в Codecademy, и там есть задание по очистке списков. На данный момент у меня есть список строк, которые представляют денежную стоимость продаж. Я хочу удалить знак "$", а затем сложить их все вместе, чтобы получить общую сумму.

Код: Выделить всё

total_sales=0
sales_num=[]
for item in sales:
sales_num.append(float(item.replace("$", "")))
for num in sales_num:
total_sales += num

print(sales)
print(sales_num)
print(total_sales)
Моя первая версия в основном делала это за один шаг, но затем я разбил ее на несколько списков. Я распечатал свой sales_num, и он показывает все десятичные числа, ни одно из которых не имеет значения, превышающего два пробела после десятичной точки. Но когда я складываю их все вместе, получается ответ:

Код: Выделить всё

['$1.21', '$7.29', '$12.52', '$5.13', '$20.39', '$30.82', '$1.85', '$17.98', '$17.41', '$28.59', '$14.51', '$19.64', '$11.40', '$8.79', '$8.65', '$10.53', '$16.49', '$6.55', '$11.86', '$22.29', '$8.35', '$2.91', '$22.94', '$4.70', '$3.59', '$5.66', '$17.51', '$5.54', '$17.13', '$21.13', '$0.35', '$13.91', '$19.26', '$5.45', '$5.50', '$14.56', '$7.33', '$20.22', '$8.67', '$8.31', '$15.70', '$6.74', '$30.84', '$12.31', '$2.94', '$22.46', '$6.60', '$6.27', '$21.12', '$2.10', '$14.22', '$11.60', '$25.27', '$8.26', '$30.80', '$22.61', '$22.19', '$7.47', '$5.49', '$23.70', '$26.66', '$25.95', '$19.55', '$15.68', '$23.57', '$29.32', '$26.44', '$17.24', '$8.49', '$13.10', '$20.39', '$14.70', '$22.45', '$28.46', '$23.89', '$24.49', '$1.81', '$6.81', '$0.65', '$26.45', '$7.69', '$8.74', '$1.86', '$14.75', '$28.10', '$9.91', '$16.34', '$27.57', '$5.25', '$9.51', '$20.56', '$21.64', '$24.99', '$29.70', '$15.52', '$15.70', '$12.36', '$13.66', '$30.52', '$22.66']
[1.21, 7.29, 12.52, 5.13, 20.39, 30.82, 1.85, 17.98, 17.41, 28.59, 14.51, 19.64, 11.4, 8.79, 8.65, 10.53, 16.49, 6.55, 11.86, 22.29, 8.35, 2.91, 22.94, 4.7, 3.59, 5.66, 17.51, 5.54, 17.13, 21.13, 0.35, 13.91, 19.26, 5.45, 5.5, 14.56, 7.33, 20.22, 8.67, 8.31, 15.7, 6.74, 30.84, 12.31, 2.94, 22.46, 6.6, 6.27, 21.12, 2.1, 14.22, 11.6, 25.27, 8.26, 30.8, 22.61, 22.19, 7.47, 5.49, 23.7, 26.66, 25.95, 19.55, 15.68, 23.57, 29.32, 26.44, 17.24, 8.49, 13.1, 20.39, 14.7, 22.45, 28.46, 23.89, 24.49, 1.81, 6.81, 0.65, 26.45, 7.69, 8.74, 1.86, 14.75, 28.1, 9.91, 16.34, 27.57, 5.25, 9.51, 20.56, 21.64, 24.99, 29.7, 15.52, 15.7, 12.36, 13.66, 30.52, 22.66]
1498.7400000000005
Мой вопрос: почему я получаю этот странный десятичный ответ с таким количеством знаков после запятой?

Подробнее здесь: https://stackoverflow.com/questions/790 ... -in-python

Вернуться в «Python»