Can';t从循环中的浮点值减去浮点值?

Can';t从循环中的浮点值减去浮点值?,c,floating-point,subtraction,C,Floating Point,Subtraction,我第一天就开始学习C语言,想创建一个程序,询问用户应该付多少零钱,然后说出可以兑换的最小硬币数。假设唯一的硬币是四分之一(0.25)、一角硬币(0.10)、五分镍币(0.05)和便士(0.01)。如果所欠的零钱是1.15,那么这个程序应该是4个25美分,1个10美分和1个5美分。无论如何 问题是,当更改值为0.25或更大时,我试图从浮点更改中减去0.25 int main(void) { float change; printf("Kui palju on vaja peenra

我第一天就开始学习C语言,想创建一个程序,询问用户应该付多少零钱,然后说出可以兑换的最小硬币数。假设唯一的硬币是四分之一(0.25)、一角硬币(0.10)、五分镍币(0.05)和便士(0.01)。如果所欠的零钱是1.15,那么这个程序应该是4个25美分,1个10美分和1个5美分。无论如何

问题是,当更改值为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);
    }


}
这是我得到的输出,这个程序将继续这样做。

这太奇怪了,因为变化——有效,但变化-0.25不起作用。我做错什么了吗?有没有可行的替代方案

变化:

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

更改:

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


你需要初始化四分之一(为什么四分之一是浮动的?你能有1.7个四分之一吗?)。也许这更具可读性:

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

你需要初始化四分之一(为什么四分之一是浮动的?你能有1.7个四分之一吗?)。也许这更具可读性:

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

计算机上的浮点运算总是会导致舍入错误,因此,虽然初学者练习可以使用浮点类型,但要记住,在实际应用中,千万不要为了钱而使用浮点类型。将文本作为文本而不是文本图片发布是一种礼貌且更有用的数据呈现方式。@JoachimPileborg你说得对。它不会将0.01识别为便士。但随着数字的增加,情况确实如此。奇怪的。:)计算机上的浮点运算总是会导致舍入错误,因此,虽然初学者练习可以使用浮点类型,但要记住,在实际应用中,千万不要为了钱而使用浮点类型。将文本作为文本而不是文本图片发布是一种礼貌且更有用的数据呈现方式。@JoachimPileborg你说得对。它不会将0.01识别为便士。但随着数字的增加,情况确实如此。奇怪的。:)