Java - 数字没有正确减去?

时间:2015-10-28 22:40:08

标签: java math

因此,我开始制定收银机计划,该计划将考虑用户支付的费用以及对象的费用。这将告诉用户他们将获得多少硬币(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

这对我来说非常奇怪,因为我输入的数字只是第二个小数。我从剩下的数字中减去数字就好了。那么我的问题是什么?

0 个答案:

没有答案