我不明白如何计算不同的金额

时间:2015-01-29 13:52:35

标签: java

我不明白如何计算结果

int halfDollar = remainingAmount / 50;
remainingAmount = remainingAmount % 50;

int numberOfQuarters = remainingAmount / 25;
remainingAmount = remainingAmount % 25;

ETC .....

import java.util.Scanner;

public class Program3
{
    public static void main(String [] args)
    {
        Scanner kbd = new Scanner(System.in);

        System.out.print("Please enter the total dollar amount in the piggy bank: $");
        double amount = kbd.nextDouble();

        int remainingAmount = (int)(amount * 100);

        int halfDollar = remainingAmount / 50;
        remainingAmount = remainingAmount % 50;

        int numberOfQuarters = remainingAmount / 25;
        remainingAmount = remainingAmount % 25;

        int numberOfDimes = remainingAmount / 10;
        remainingAmount = remainingAmount % 10;

        int numberOfNickels = remainingAmount / 5;
        remainingAmount = remainingAmount % 5;

        int numberOfPennies = remainingAmount;


        System.out.println(String.format("In $" + "%.2f", amount) + " worth of pennies there are:");
        System.out.println(halfDollar + " half dollar(s), " + numberOfQuarters + " quarter(s), " + numberOfDimes + " dime(s), " + numberOfNickels + " nickle(s), and " + numberOfPennies + " cent(s).");
    }
}

3 个答案:

答案 0 :(得分:1)

这很简单,你将美元的数量乘以100并获得美分数,然后计算出多少镍币,硬币等。

例如,5.26美元是526美分,即10美元(5美元),1季度,1美分。

整数除法给出了Y包含X的次数,模数(%)给出了余数。

526 / 50 = 10
526 % 50 = 26

26 / 25 = 1
26 % 25 = 1

1 / 10 = 0
1 % 10 = 1

1 / 5 = 0
1 % 5 = 1

1 / 1 = 1
1 % 1 = 0

显然,这样做的目的是通过首先给出最高面额的硬币,然后是下一个面额的硬币等最多的硬币来打破最少数量的硬币中的金额。

答案 1 :(得分:0)

为避免分数,您将值乘以100.使用分数进行计算有点困难。 例如,不是用1.25美元进行计算,程序员更喜欢进行计算125.这样可以很容易理解。

如果将(/)X除以Y,则可以找到X包含的Y的数量。 如果你取Y的mod(%)X,你会发现X的余数除以Y

Think that $1.43 entered.

1.43 * 100 = 143
143 / 50 = 2 -> Half dollar
143 % 50 = 43 -> remainder of division

43 / 25 = 1 -> Quarter
43 % 25 = 18 -> remainder of division

18 / 10 = 1 -> Dimes
18 % 10 = 8 -> remainder of division

8 / 5 = 1 -> Nickels
8 % 5 = 3 -> remainder of division

There is no more division last remainder is pennies and it is 3

答案 2 :(得分:0)

/运算符在应用于int时提供整数除法。那就是:分数部分被扔掉的分区。

例如:10 / 3提供3

自:

  • 1033.3333333重复发生。
  • 丢弃小数部分(0.3333333重复出现)会得到结果 3

%运算符提供模数或整数除法的余数。即:分子减去分母的最大倍数,小于分子。

例如:10 % 3给出1

自:

  • 分子为10
  • 分母为3
  • 整数除法10 / 3的结果为3(正如我们上面所述)
  • 小于分子(3)的分母(10)的最大倍数是3,因为3 * 39而且3不是9的倍数1}}大于10但小于9
  • 从分子(10)中减去(10 - 9),得到1,结果为 /

理解这一点的一种更简单的方法是,整数3是整个事物的分裂,不能被分割。所以你可能想要在3个人之间平均分割10个大理石(你不想分成几块)。然后每个人获得3个大理石,但剩下1个大理石。

注意:分母的最大倍数恰好是整数除法的结果(在这种情况下为10 / 3,因为在3 10 / 3 =

注意:你也可以通过将小数部分乘以整数除法的结果(我们计算得出3 0.33333... * 3 )来解决这个问题。给予1结果为 {{1}}