我是一个初学者,这是(的简化版本)的代码,我写这封信的部分:C,而环棘手异常
1.prompt用户输入一个数字(浮动金额),让用户说将只有数量是0.05的倍数;
2.计算该美元数量的镍(int)数量。
int main(void)
{
float amount = 0;
printf("$ ");
amount = get_float();
int n = 0;
while ((amount - 0.05) >= 0)
{
amount -= 0.05;
n ++;
}
printf("%i nickels\n", n);
}
它适用于任何量< = 0.3或> = 1.2(因此$ 2具有40个镍和$ 0.30有6个镍);
但一个镍少之间/包括0.35和1.15的任何量(因此$ 0.35有6个镍和$ 1具有19个镍)
我步步打印,事实证明,对之间的任何量0.35和1.15,程序停止在最后的0.050000,而不是返回到循环并且最后一次循环。
出了什么问题?请帮助...非常感谢您的时间!
相关:是浮点数学破? –
切勿使用浮点进行货币计算。浮点不适用于货币,会导致结果错误,不准确,有时甚至是非法的。使用整数来计算分数并检查你的法则对四舍五入的说法。即使只是学习或编写示例代码,也会养成正确的做法。试着让数字正确合计,而愤怒的会计师在每个月的午夜前45分钟就会对你大喊大叫,这并不好玩(特别是当它是某人时elses代码)。 – Art