#include <cs50.h> #include <stdio.h> #include <math.h> int main(void) { float quarter = 0.25, dime = 0.10, nickle = 0.05, penny = 0.01,dollar; int coins = 0; int cents; // prompts the user for the value of change in valid parameters do { printf("How much change is owed?\n"); dollar = GetFloat(); if (dollar == 0) { return 0; } } while (dollar <= 0); cents = (int) roundf(dollar * 100); // takes as many quarters as possible from the value of change while( quarter < cents ) { cents = cents - quarter; coins++; } // takes as many dimes as possible from the value of change while( dime < cents ) { cents = cents - dime; coins++; } // takes as many nickles as possible from the value of change while( nickle < change ) { cents = cents - nickle; coins++; } // takes as many pennies as possible from the value of change while( penny < cents ) { cents = cents - penny; coins++; } // prints how many coins were used printf("%i\n", coins); return 0; } Hey, so this is my code for greedy. When I run it, the amount of necessary coins is slightly imprecise ( when I modify it to a float value, I see just a clean 3.00000 * 10 for example with a roundf for change). For example, when I input 0.41 it shows 3 or 5 to 22 coins or 10 to 42 coins, never actually getting the precise amount of coins needed even if the aforementioned modification not in this topic shows a clean floating value. Please help !