不能从 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;
}
我第一天开始学习 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;
}