Я хочу разделить данную сумму в долларах на 3 части в зависимости от веса, показанного ниже.
amount = 2220
multiply = [0.6217, 0.1621, 0.2162] # sums up to 1
part_a = amount * multiply[0] # 1380.174
part_b = amount * multiply[1] # 479.964
part_c = amount * multiply[2] # 359.86199999999997
total = part_a + part_b + part_c
print(total) # 2220.0
Сумма part_a
, part_b
, part_c
в сумме дает 2220. Однако проблема возникает, когда я пытаюсь округлить ее до 2 знаков после запятой.
part_a = round(amount * multiply[0], 2) # 1380.17
part_b = round(amount * multiply[1], 2) # 479.96
part_c = round(amount * multiply[2], 2) # 359.86
total = part_a + part_b + part_c
print(total) # 2219.9900000000002
Почему отдельные значения для part_a
, part_b
, part_c
имеют 2 десятичных знака, а общее значение становится 2219.9900000000002
?
Как лучше всего рассчитать результаты, чтобы части a, b и c были с двумя знаками после запятой, а сумма различных частей давала исходную сумму, равную 2200?