Как представить значения с плавающей запятой в 2 точках с плавающей запятой в python?

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


person Eric Gomes    schedule 08.04.2020    source источник
comment
Отвечает ли это на ваш вопрос? Как округлить до 2 знаков после запятой с помощью Python?   -  person Biarys    schedule 08.04.2020


Ответы (1)


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

resto = round(resto - valor, 2)
person kederrac    schedule 08.04.2020