gpt4 book ai didi

c - while 循环中的 if 语句未给出 C 中的预期输出

转载 作者:行者123 更新时间:2023-11-30 16:48:11 25 4
gpt4 key购买 nike

我正在编写程序来计算给定一定找零量的最大找零硬币数量。我将所需的零钱视为正 float ,并通过乘以 100 将其转换为整数,以便金额以便士为单位。经过测试,某些值有效,但其他值(例如 4.2)则无效,在本应为 18 的情况下给出了答案 22。我不明白为什么。请一些人帮忙。

int main (void) 

{

float change;

do
{

printf("How much change do you want?\n");
change = get_float();

} while (change < 0);

int change1 = change * 100;

int coins = 0;

while (change1 != 0)

{

if (change1 >= 25)

{
change1 -= 25;
coins++;
}

else if (change1 >= 10)

{
change1 -= 10;
coins++;
}

else if (change1 >= 5)

{
change1 -= 5;
coins++;
}

else if (change1 >= 1)

{
change1 -= 1;
coins++;
}


}

//Print change
printf("%i\n", coins);

}

最佳答案

舍入误差:

当机器存储 4.2 时,它不完全4.2。因此,当乘以 100 时,得到 419.99999...,它转换为 int 419。解决此问题的方法是:

int change1 = change * 100 + 0.5;

这也可以通过以下方式检查

printf("%i\n", change1)

计算后。

关于c - while 循环中的 if 语句未给出 C 中的预期输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43055177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com