Ответ Одеда определенно один для реализации. Используйте целые числа.
Однако у вас есть другая проблема: cent = 100 % total;
Этот код не делает то, что вы думаете.
Поскольку сумма является целым числом и суммируется следующим образом:
total = (int) quarters + (int) dimes + (int) nickels + (int) pennies;
Ваш результат 51. Это даже 51 доллар. Вы потеряли всю информацию о дробных долларах, преобразовав двойные значения (четверти, десять центов, никелей и пенни) в целые числа. Если бы значение кварталов было бы 10,25, тогда (int) кварталы были бы равны 10.
Теперь вы пытаетесь получить количество оставшихся центов, используя cent = 100 % total;
Это дает вам целочисленный остаток от 100 / всего. В вашем случае 100/51. Остаток 49, который вы сохранили в «центах». Просто в вашем примере это произошло, чтобы быть близким к правильному значению. Вот почему ваш ответ был неправильным, а не округления.
Все, что сказано, вы все равно должны использовать целые числа для всех ваших значений.