Чтобы добавить к другим ответам, которые в значительной степени правильно указывают на то, что deposit > 2*deposit
никогда не может быть истинным (вам нужна вторая переменная, чтобы записать начальное значение!), Единственная причина, по которой ваш цикл завершается вообще, заключается в том, что deposit
становится настолько большим , что 2*deposit
"оборачивается" из-за переполнения.
Похоже, что 2*deposit
больше deposit
(логически невозможно - вам нужно это исправитьсравнение!) хотя, строго говоря, результаты не определены.
Очевидно, что это происходит с вами после примерно 200 итераций.
Что касается предложений по переключению на тип с плавающей точкой, такой как double
,это заманчиво и может быть достаточным в этом простом случае, но, как правило, вам следует избегать чисел с плавающей запятой, когда вам это не нужно, поскольку это приводит к сложностям и неточностям для очень небольшого усиления.
Я бырекомендуем вместо этого подсчитывать целые или десятые доли.Вы можете достичь этого путем умножения входных данных на 100 или 1000. Полученное в результате инкрементальное умножение на 1,05 будет иметь коэффициент округления, но банки тоже будут этим заниматься!