Я написал простой калькулятор изменений в Python для практики, и у меня возникла проблема. Вот мой код:Равные десятичные числа в Python
amounts = (100, 50, 20, 10, 5, 2, 1, 0.25, 0.10, 0.05, 0.01)
def get_change(full_amount):
final_change = []
for amount in amounts:
number = 0
while full_amount >= amount:
if (full_amount < 0.50 and full_amount > 0.10 and amount == 0.25): break
number += 1
full_amount -= amount
final_change.append(number)
return final_change
Предположим, я вхожу 2.40. Он идет от 2,40, до 0,40 (toonie), а затем он должен идти, до if (full_amount < 0.50 and full_amount > 0.10 and amount == 0.25): break
он пропустит 0,25 и закончит с четырьмя копейками. Однако на самом деле он заканчивается 3-мизнами, одним никелем и всего четырьмя пенни. Проблема, как представляется, возникает, когда оставшаяся сумма равна проверенной сумме (0.10 центов и 0,10 цента в качестве суммы - и тому же с никелем)
'(full_amount <0.50 и full_amount> 0.10 и amount == 0.25)' - почему первые две проверки? просто сделайте 'amount == 0.25'. Если одно из первых двух не будет выполнено, последняя проверка тоже будет - так что не делайте их –
'1.4 - 1 == 0.3999999999999999'' –