Вы обнаружили парадокс Зенона. Если ставка (оплата) всегда пропорциональна балансу, баланс никогда не станет полностью равным нулю. Предположим, вы всегда платили половину того, что должны:
$ 100
$ 50
$ 25
$ 12,50
...
$ 0,00009536 <- может показаться, что вы уже заплатили, но для вашего цикла while это все равно удовлетворяет <code>b1 > 0.
У вас есть два варианта:
1. Вы можете изменить правила, чтобы минимальный платеж составлял 2% или 20 долларов США, в зависимости от того, что больше. Я думаю, это то, что на самом деле делают кредитные карты, кстати
- Вы можете остановиться, когда ваш баланс станет меньше 1 цента.