【发布时间】:2012-02-12 07:10:27
【问题描述】:
这个程序有效,除非 nJars 的数量是 7 的倍数,否则我会得到像 $14.999999999999998 这样的答案。对于 6,输出为 14.08。如何修复 7 的倍数的异常,使其显示 14.99 美元之类的内容?
import java.util.Scanner;
public class Homework_17
{
private static int nJars, nCartons, totalOunces, OuncesTolbs, lbs;
public static void main(String[] args)
{
computeShippingCost();
}
public static void computeShippingCost()
{
System.out.print("Enter a number of jars: ");
Scanner kboard = new Scanner (System.in);
nJars = kboard.nextInt();
int nCartons = (nJars + 11) / 12;
int totalOunces = (nJars * 21) + (nCartons * 25);
int lbs = totalOunces / 16;
double shippingCost = ((nCartons * 1.44) + (lbs + 1) * 0.96) + 3.0;
System.out.print("$" + shippingCost);
}
}
【问题讨论】:
-
因为这似乎是家庭作业,所以我会给出一个提示:使用 DecimalFormat 类。
-
使用Java提供的类有什么问题?它不是任何第三方类。
-
IRL 您不应该使用浮点数进行货币计算。请改用 BigDecimal/long/int。见stackoverflow.com/questions/3730019/…