我正在尝试编写一个程序,该程序向用户返回用于构成用户输入的美元金额(美国货币)的最小数量的美国硬币。
我的问题:当程序达到 0.1 时,程序不会减去一角钱,而是减去一个镍和 5 个便士。这只发生在大于 1.85 的数字上。当小于 1.85 时,成功减去一角钱。
这是我的代码:
while (Money >= 0.25){
Money = Money - 0.25;
Coins = Coins + 1;
printf ("Current money: %f \n", Money);
}
while (Money >= 0.1) {
Money = Money - 0.1;
Coins = Coins + 1;
printf ("Current money: %f \n", Money);
}
while (Money >= 0.05) {
Money = Money - 0.05;
Coins = Coins + 1;
printf ("Current money: %f \n", Money);
}
while (Money >= 0.01) {
Money = Money - 0.01;
Coins = Coins + 1;
printf ("Current money: %f \n", Money);
}
这是我使用数字 2.1 时的输出:
2.1
Current money: 1.850000
Current money: 1.600000
Current money: 1.350000
Current money: 1.100000
Current money: 0.850000
Current money: 0.600000
Current money: 0.350000
Current money: 0.100000
Current money: 0.050000
Current money: 0.040000
Current money: 0.030000
Current money: 0.020000
Current money: 0.010000
Used 13
这是我使用数字 1.85 时的输出:
1.85
Current money: 1.600000
Current money: 1.350000
Current money: 1.100000
Current money: 0.850000
Current money: 0.600000
Current money: 0.350000
Current money: 0.100000
Current money: 0.000000
Used 8
为什么会这样?为什么大于 1.85 的数字不使用角钱?