【发布时间】:2014-09-11 17:22:22
【问题描述】:
这个程序除了 $1.16 之外进行了更改,为什么不能正确处理?
public class Change {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Enter Change: ");
double change = in.nextDouble()*100;
int dollars = Math.round((int)change/100);
change=change%100;
int quarters = Math.round((int)change/25);
change=change%25;
int dimes = Math.round((int)change/10);
change=change%10;
int nickels = Math.round((int)change/5);
change=change%5;
int pennies = Math.round((int)change/1);
System.out.println("Dollars: " + dollars);
System.out.println("Quarters: " + quarters);
System.out.println("Dimes: " + dimes);
System.out.println("Nickels: " + nickels);
System.out.println("Pennies: " + pennies);
}
}
我认为这是一个截断问题,因为当我在以下代码中使用 .9 时,它可以工作:
int pennies = Math.round((int)change/.9);
【问题讨论】:
-
这就是 BigDecimal 用于银行业务的原因
-
以美分计算所有的...
标签: java casting truncation