#include <stdio.h>
#include <cs50.h>
#include <math.h>
int main (void) { 
    printf ("Enter amount: ");
    float amount = GetFloat();
    int coins = 0;
    while (amount != 0) {
        if (fmod(amount, 0.25) == 0) {
            amount = amount - 0.25;
            coins += 1;
        }
        else if (fmod(amount, 0.10) == 0) {
            amount = amount - 0.10;
            coins += 1;
        }
        else if (fmod(amount, 0.05) == 0) {
            amount = amount - 0.05;
            coins += 1;
        }
        else {
            amount = amount - 0.01;
            coins += 1;
        }
    }
    printf ("Coins : %d\n", coins);
}
I'm trying to implement a small greedy algorithm, in which a user inputs an amount of money ( Ex: 9.25 ) and we output the least amount of coins that it takes for us to exchange it in change( 25 cents, 10 cents, 5 cents and 1 cent only).
This algorithm works with int amounts like 10 or 20 and with amounts that only requires the program to use the 25 cents coins.
If I try an amount like 9.10 or 9.01, I get a runtime error, signed integer overflow. I understand what it means, but I don't understand how can the value of coins go so high all of a sudden.
 
     
     
     
     
     
     
     
    