因此,我开始制定收银机计划,该计划将考虑用户支付的费用以及对象的费用。这将告诉用户他们将获得多少硬币(Toonies,loonies等)作为回报。 以下是确定用户将获得多少硬币的代码部分:
if(amountPayed >= amountToPay) {
remainder = amountPayed - amountToPay;
while(remainder > 0) {
if(remainder >= 2) {
toonies++;
remainder = remainder - 2;
System.out.println(remainder);
}
else if(remainder >= 1) {
loonies++;
remainder = remainder - 1;
System.out.println(remainder);
}
else if(remainder >= 0.25) {
quarters++;
remainder = remainder - 0.25;
System.out.println(remainder);
}
else if(remainder >= 0.1) {
dimes++;
remainder = remainder - 0.1;
System.out.println(remainder);
}
else if(remainder >= 0.05) {
nickels++;
remainder = remainder - 0.05;
System.out.println(remainder);
}
else if(remainder >= 0.01) {
pennies++;
remainder = remainder - 0.01;
System.out.println(remainder);
}
}
我在获得正确金额方面遇到了问题,循环最终变得无限。我心想,当我确保所有的价值都能均匀地通过时,这是不可能的。
我决定我应该做一些调试,所以每次经过时我都会输出余数。这就是我得到的:
18.01
16.01
14.010000000000002
12.010000000000002
10.010000000000002
8.010000000000002
6.010000000000002
4.010000000000002
2.0100000000000016
0.010000000000001563
1.5629858518551032E-15
这对我来说非常奇怪,因为我输入的数字只是第二个小数。我从剩下的数字中减去数字就好了。那么我的问题是什么?