为什么上次美元变化计算错误



为什么最后的计算打印出错误的计算。 这是我的代码:

System.out.print("Enter total cost: ");
double totalCost = input.nextDouble();
System.out.print("The Customer has paid: ");
double customerAmount = input.nextDouble();
//Calculations
double changeOwed = customerAmount - totalCost;
System.out.println("Change owed: $"+(int)changeOwed);
int amountFifty = (int)changeOwed/50;
System.out.println("How many $50 notes = " +amountFifty);
int takeAway = (int)changeOwed - (amountFifty * 50);
int amount20 = takeAway / 20;
System.out.println("How many $20 notes = " +amount20);
int amount10 = (takeAway - amount20*20) / 10;
System.out.println("How many $10 notes = " +amount10);
enter code here
int amount5 = (takeAway - amount10*10) / 5;
System.out.println("How many $5 notes = " +amount5);
int amount2 = (takeAway - amount5*5) / 2;
System.out.println("How many $2 notes = " +amount2);
int amount1 = (takeAway - amount2*2) /1;
System.out.printl
n("How many $1 notes = " +amount1);

您没有正确跟踪在此过程中发布的更改。

int takeAway = (int)changeOwed - (amountFifty * 50);

上面的行正确计算了确定所需 50 美元钞票数量后的剩余金额。这意味着:

int amount20 = takeAway / 20;
int amount10 = (takeAway - amount20*20) / 10;

正确计算 $10 和 $20 钞票的数量。

int amount5 = (takeAway - amount10*10) / 5;

不正确,因为您不减去 20 美元钞票的价值,只减去 10 美元钞票的价值。你在计算 2 美元时犯了一个类似的错误,即。你不考虑 20 美元和 10 美元。1 美元的误差加剧了。

您可以尝试如下操作:

int amountFifty = changeOwed / 50;
double takeAway = changeOwed - (amountFifty * 50);
int amount20 = takeAway / 20;
takeAway -= (amount20 * 20);
int amount10 = takeAway / 10;
takeAway -= (amount10 * 10);
int amount5 = takeAway / 5;
takeAway -= (amount5 * 5);
int amount2 = takeAway / 2;
takeAway -= (amount2 * 2);
int amount1 = takeAway / 1;

最新更新