不能从 for 循环中的浮点数中减去浮点值?

Can't subtract float value from float in for loop?

我第一天开始学习 C,想创建一个程序,询问用户欠了多少零钱,然后说出可以找零的最少硬币数量。假设仅有的硬币是 25 美分 (0.25)、10 美分 (0.10)、5 分硬币 (0.05) 和 1 美分 (0.01)。因此,如果所欠的零钱是 1.15,那么这个程序应该说 4 个季度、1 个角钱和 1 个镍币。无论如何。

问题是当变化值为 0.25 或更大时,我试图从浮动变化中减去 0.25。

int main(void)
{
    float change;
    printf("Kui palju on vaja peenraha tagasi maksta?\n");
    change = GetFloat();

    float quarters;
    for (change; change >= 0.25; change - 0.25, quarters++) // This is where i tried to subtract. Look only on this line because everything else is incomplete.
    {
        printf("change= %f and quarters= %f", change, quarters);
    }


}

这是我得到的输出,这个程序会一直这样下去。

这太奇怪了,因为 change-- 有效但 change - 0.25 无效。我做错什么了吗?有没有可行的替代方案?

变化:

for (change; change >= 0.25; change - 0.25, quarters++)

至:

for (change; change >= 0.25; change = change - 0.25, quarters++)

您需要初始化 quarters(为什么 quarters 是浮点数?可以有 1.7 quarters 吗?)。也许这更具可读性:

int quarters = 0;
while ( change >= .25 ) {
   quarters++;
   change -= .25;
}