在回报中限制小数位数?

时间:2018-01-26 21:29:42

标签: java double decimalformat

我是新手,并试图坚持这里的基本概念。如何限制从另一个类的返回中提取的答案中的小数?我不确定如何以价格格式000.00写a.calculateTuition。我找不到使用DecimalFormat类的好方法,而Math.round()对于价格来说不够准确。提前谢谢!

来自班级:

public double creditHours;
public double calculateTuition(){
    double totalCost=0;
    double costPerHour=124.04;
    totalCost = creditHours * costPerHour;

    return totalCost;
}

来自Main:

Student a=new Student();
a.setHours(3);
System.out.println("Cost is " +  a.calculateTuition());

2 个答案:

答案 0 :(得分:0)

通常认为最佳做法是使用BigDecimal与货币/货币相关的计算,因为它提供了精确度。

如果你决定使用BigDecimal,它也有.setScale()和你可能会觉得有用的许多其他有用的方法。

答案 1 :(得分:0)

您可以使用以下实用程序来舍入所需的小数位数,     public static double round(double value,int places){     if(places< 0)抛出新的IllegalArgumentException();

long factor = (long) Math.pow(10, places);
value = value * factor;
long tmp = Math.round(value);
return (double) tmp / factor;
}