大家圣诞快乐。在圣诞老人到来之前,我确实有一个问题。
我是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”中。在您的示例中,它恰好接近正确的值。这就是为什么您的答案不正确而不是四舍五入的原因。综上所述,您应该仍然对所有值使用整数。