Как представить значения с плавающей точкой в ​​2 с плавающей точкой в ​​python? - PullRequest
1 голос
/ 08 апреля 2020

Мне нужно вычислить значения типа 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?

1 Ответ

2 голосов
/ 08 апреля 2020

вы можете использовать:

resto = round(resto - valor, 2)
...