【发布时间】:2015-09-22 12:02:18
【问题描述】:
我正在创建一个回馈变化的系统。当我运行程序时,我得到: (假设我给了 100 美元)
You have given 100.0 dollars.
Your change is 14.670000000000002 dollars.
You will recieve:
0.6700000000000017 dollars
0.1700000000000017 quarters
0.0700000000000017 dimes
0.020000000000001697 nickels
1.6965595595053173E-15 pennies
代码
import java.util.Scanner;
public class RunGivingChange {
public static void main(String[] args) {
// TODO Auto-generated method stub
double given;
double cost = 85.33;
double change;
int dollars;
int quarters;
int dimes;
int nickels;
int pennies;
Scanner input = new Scanner(System.in);
System.out.println("Your total is " + cost + " dollars.");
System.out.println("How much money are you giving?");
given = input.nextDouble();
if (given >= cost)
{
System.out.println("You have given " + given + " dollars.");
change = given - cost;
System.out.println("Your change is " + change + " dollars.");
System.out.println("You will recieve:");
//dollars
change = change % 1;
System.out.println(change + " dollars");
//quarters
change = change % 0.25;
System.out.println(change + " quarters");
//dimes
change = change % 0.10;
System.out.println(change + " dimes");
//nickels
change = change % 0.05;
System.out.println(change + " nickels");
//pennies
change = change % 0.01;
System.out.println(change + " pennies");
}
else if (given < cost)
{
System.out.println("Not enough money.");
}
else
{
System.out.println("Error.");
}
}
}
【问题讨论】:
-
至少对您的下一个问题提出建议/要求:尽可能具体。
It's giving the wrong number没有多大帮助。至少我们需要知道您认为错误的是什么:是精度、计算结果还是其他原因?