Мне нужно вычислить значения типа float, поэтому в python 0,01 — это не 0,01, а 0,100000000000000001 + несколько цифр (на которые ссылается документация 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(resto, 2), round(resto, 10) и Decimal(resto), но результат пока неверный. При использовании resto = round(resto, 2) - valor
результат равен 0,049999999999999999, когда я передаю значения 0,15.
Используя Decimal, результат будет следующим:
Изображение для десятичного модуля
Как я могу обойти это число, чтобы округленное число было равно 0,05?