【发布时间】:2017-03-04 17:06:39
【问题描述】:
我一直在制作一个程序来计算变化,并且程序在完成后永远不会运行和终止。我不知道我的代码有什么问题。如果有人可以提供帮助,那就太好了。
private static void calculateChange(double price, double given) {
int ones = 0, quarters = 0, dimes = 0, nickels = 0, pennies = 0;
double change = given - price;
while (change != 0) {
if (change >= 1) {
change = change - 1;
ones++;
}
if (change >= .25) {
change = change - 0.25;
quarters++;
}
if (change >= .10) {
change = change - .10;
dimes++;
}
if (change >= .05) {
change = change - .05;
nickels++;
}
if (change >= .01) {
change = change - .01;
pennies++;
}
}
System.out.println();
System.out.println("Correct Change");
System.out.println("Ones " + ones);
System.out.println("Quarters " + quarters);
System.out.println("Dimes " + dimes);
System.out.println("Nickels " + nickels);
System.out.println("Pennies " + pennies);
}
【问题讨论】:
-
不要在这样的程序中使用浮点值。请改用整数(便士)。
-
@PaulMcKenzie 我已将硬币设为整数,但它不起作用。
-
你调试了吗?更改可能小于 0,这是您允许的。
-
@Asker123 当我说使用便士时,我的意思是任何事情都使用便士。一美元是 100,四分之一是 25,镍是 5,等等。所以你的计算根本不会使用
double,而是使用纯整数算术,这是精确的(见下面的答案)。跨度> -
@Asker123 See this link and read it carefully。对于任何希望成为计算机程序员并且必须处理这样的计算的人来说,这是必须的。在许多情况下,需要进行金钱和财务计算才能计算出精确值,因此绝对不能使用
double。