【问题标题】:I dont understand how the different amounts are calculated [closed]我不明白如何计算不同的金额[关闭]
【发布时间】:2015-03-28 18:44:02
【问题描述】:

我不明白结果是如何计算出来的

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

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

等......

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).");
    }
}

【问题讨论】:

  • 你问过这段代码是谁写的吗?
  • 为了解决功课,我是根据书中的例子写的。我只是想完全了解这是如何解决的。
  • 你了解/% 运算符的作用吗?
  • 也许你应该问一个具体的问题(比如% 运算符是什么?)
  • 我愿意,那么当它是 (/) 时,remainingAmount 是否会被赋予不同的值?

标签: java


【解决方案1】:

/ 运算符应用于ints 时提供整数除法。即:小数部分被丢弃的除法。

例如:10 / 3 给出3

自:

  • 10 除以 33.3333333 重复出现。
  • 丢弃小数部分 (0.3333333 recurring) 得到结果 3

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

例如:10 % 3 给出1

自:

  • 分子是10
  • 分母是3
  • 整数除法10 / 3 的结果是3(如我们上面计算的那样)
  • 小于分子 (10) 的分母 (3) 的最大倍数是 3,因为 3 * 39 并且没有任何 3 的倍数大于 9 但是小于10
  • 从分子 (10) 中减去 (9),得到 10 - 9,结果为 1

更容易理解这一点的方法是整数/ 是对无法拆分的整个事物的除法。因此,您可能希望将 10 个弹珠(您不想将其分成几块)平均分配给 3 个人。然后每个人得到 3 个弹珠,但剩下 1 个弹珠。

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

注意:您也可以通过将小数部分乘以整数除法的结果来计算(我们计算的结果是10 / 3 =3)。给出0.33333... * 3,这是结果1

【讨论】:

    【解决方案2】:

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

    如果您将 (/) X 除以 Y,您会发现 X 包含的 Y 的数量。 如果你取 mod(%) X of Y 你会发现 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
    

    【讨论】:

      【解决方案3】:

      这很简单,您将美元数乘以 100,得到美分数,然后计算将是多少五分钱、一角硬币等。

      例如,5.26 美元是 526 美分,也就是 10 个半美元(5 美元),1 季度,1 便士。

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

      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
      

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

      【讨论】:

      • 我认为 576 % 50 = 26。
      • 这里的数学不太好。 576/50 = 11 和 576%50 = 26
      • 是的,我在想 5.26 然后中途切换,因此一团糟。我现在修好了。
      • 谢谢,这说明了一切。
      猜你喜欢
      • 2022-10-07
      • 1970-01-01
      • 2014-04-02
      • 1970-01-01
      • 1970-01-01
      • 2015-02-01
      • 2015-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多