I'm trying to follow the math of this example program but as you can see in the comments I've been trying to work out the math, but when I follow the given equations it doesn't calculate correctly, yet the program still gives an accurate output...what am I missing? How is the change function working?

Code:
#include <stdio.h>



#include<stdio.h>
void change(float coin)
{
    float abc = coin*10.0*10.0; /*12.59 * 10.0 * 10.0=1259*/
    int sum = abc;
    int x, y, z;
    

    z = sum / 25;  /*   1259/25= 50.36  */
    printf(" %d quarters \n", z);
    sum = sum - z * 25; /*1259-50.36*25*/
    y = sum / 10;
    printf(" %d dime \n", y);
    sum = sum - y * 10;
    x = sum / 5;
    printf(" %d nickels \n", x);
    sum = sum - x * 5;
    printf(" %d pennies \n", sum);
}
int main()
{
    float d;
    
    printf(" Enter a value for change :");/*EXAMPLE TEST WITH $12.59*/
    scanf_s("%f", &d);
    change(d);

    getchar();
    getchar();
    return 0;

}