大家圣诞快乐。在圣诞老人到来之前,我确实有一个问题。

我是Java的新手,所以我会浏览Java书籍,并在第一章中进行练习。

这是问题
“编写并确定罐中硬币价值并以美元和美分打印总计的应用程序。读取表示四分之一硬币,一角硬币,五分之一硬币和几分钱硬币的整数值。”

我实际上做了这个程序。但是我想知道我做对了吗。

public class PP28 {
  public static void main(String[] args) {

    // cents = pennies.

    double quarters = 0.25 * 40;
    double dimes = 0.1 * 200;
    double nickels = 0.05 * 400;
    double pennies = 0.01 * 150;
    int total;
    int cent;


    total =  (int) quarters + (int) dimes + (int) nickels + (int) pennies;
    cent = 100 % total;
    System.out.println(total+" dollars and "+cent+" cents");

  }
}


它可以编译并运行良好。另外,我想知道这在数学上是否正确?我应该得到几乎等于51.(5)$的49美分吗?因为所有季度,一角硬币,五角钱和几分钱的总和为51.5美元。

最佳答案

奥德的答案绝对是可以实施的。使用整数。

但是,您还有另一个问题:cent = 100 % total;
这段代码没有按照您认为的那样做。

因为total是一个整数,并且像这样求和:

total =  (int) quarters + (int) dimes + (int) nickels + (int) pennies;


您的结果是51。甚至就是51美元。通过将双精度值(四分之一,二位数,五分之一和几美分)转换为整数,您损失了所有有关分数美元的信息。如果四分之一的值将是10.25,则(整数)四分之一将是10。

现在,您尝试使用cent = 100 % total;来获取剩余的美分数。这将为您提供100 /合计的整数余数。在您的情况下为100 /51。剩余的剩余数是49,您将其存储在“ cent”中。在您的示例中,它恰好接近正确的值。这就是为什么您的答案不正确而不是四舍五入的原因。

综上所述,您应该仍然对所有值使用整数。

07-24 09:37
查看更多