【发布时间】:2014-02-07 14:56:31
【问题描述】:
我尝试了很多方法,例如 math.Round 并让它们成为双精度数和整数,但我不知道为什么以及在哪里最后四舍五入到 2 美分。当我购买 32.27 并用 36 支付时,答案是 3 美元 2 季度 2 毛钱 2 美分。 这是我的代码:
import java.util.Scanner;
public class Change {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Purchase: ");
double purchase = input.nextDouble();
System.out.print("Payment: ");
double amountGiven = input.nextDouble();
int remainingAmount = (int) ((amountGiven - purchase) * 100);
int numOfDollars = remainingAmount / 100;
remainingAmount = remainingAmount % 100;
int numOfQuarters = remainingAmount / 25;
remainingAmount = remainingAmount % 25;
int numOfDimes = remainingAmount / 10;
remainingAmount = remainingAmount % 10;
int numOfPennies = remainingAmount;
System.out.println("Given $ " + amountGiven + " for a purchase of $ " +
purchase + " we need " + numOfDollars + " dollars " + numOfQuarters +
" quarters " + numOfDimes + " dimes " +
numOfPennies + " cents ");
}
}
【问题讨论】:
-
第一个问题:您使用
double表示货币值。不要那样做。使用BigDecimal,或使用美分而不是美元。