Мне нужно вычислить значения типа float, поэтому в python 0,01 - это не 0,01, а 0,10000000000000001 + несколько цифр (на которые ссылается python документация Floating).
Хорошо, моя функция должна рассчитать количество монет для каждого значения.
def calcula_moedas(resto):
moedas = [0.5, 0.1, 0.05, 0.01]
cont_moeda = {'0.5': 0, '0.1': 0, '0.05': 0, '0.01': 0}
if resto > 0.00:
for valor in moedas:
while resto >= valor:
str_valor = str(valor)
cont_moeda[str_valor] += 1
resto = round(resto, 2) - valor
break
return cont_moeda
return cont_moeda
Я пытался использовать round (ресто, 2), round (ресто, 10) и десятичное число (ресто), но результат пока неверный. Используя resto = round(resto, 2) - valor
, получается 0,04999999999999999 , когда я передаю значения 0,15 .
Используя десятичное число, получаем:
Изображение для Десятичный модуль
Как обойти это число, чтобы округленное число равнялось 0,05?