I can't understand why the code below doesn't work properly with the value 4.2. I learnt using a debugger that 4.2 isn't actually the number four point two; rather as a floating point value 4.2 becomes 4.19999981
To make up for this, I just added change = change + 0.00001; there on line 18.
Why do I have to do that? Why is this the way floating point integers work?
#include <stdio.h>
#include <cs50.h>
float change;
int coinTotal;
int main(void)
{
do {
// Prompting the user to give the change amount
    printf("Enter change: ");
// Getting a float from the user
    change = get_float();
    }
    while (change < 0);
    change = change + 0.00001;
// Subtracting quarters from the change given
    for (int i = 0; change >= 0.25; i++)
    {
        change = change - 0.25;
        coinTotal++;
    }
// Subtracting nickels from the remaining change
    for(int i = 0; change >= 0.1; i++)
    {
        change = change - 0.1;
        coinTotal++;
    }
// Subtracting dimes from the remaining change
    for(int i = 0; change >= 0.05; i++)
    {
        change = change - 0.05;
        coinTotal++;
    }
// Subtracting pennies from the remaining change
    for(int i = 0; change >= 0.01; i++)
    {
        change = change - 0.01;
        coinTotal++;
    }
// Printing total coins used
    printf("%i\n", coinTotal);
}
 
     
     
     
    