无法从for循环中的float中减去float值吗?

时间:2016-03-31 20:11:15

标签: c floating-point subtraction

我开始第一天学习C并且想要创建一个程序,询问用户欠下多少变化,然后说出可以进行更改的最小硬币数量。假设唯一的硬币是四分之一(0.25),硬币(0.10),镍(0.05)和便士(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);
    }


}

这是我得到的输出,这个程序将继续这样做。 enter image description here

这是如此奇怪,因为改变 - 工作但改变 - 0.25没有。我做错什么了吗?有替代方案有效吗?

2 个答案:

答案 0 :(得分:3)

变化:

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

为:

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

答案 1 :(得分:1)

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

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