我不确定如何使用数字格式类以使双重格式成为美国货币。
例如,如果学费是1000,我需要它打印$ 1,000.00。我会放一段代码来显示我的麻烦。
public double getCurrencyInstance()是我开始使用的方法,显然不正确。
import java.text.NumberFormat;
public class OnlineStudent extends Student {
private double computingFee;
public double getCurrencyInstance(){
return computingFee;
}
public OnlineStudent(){
super();
}
public OnlineStudent(String fName, String lName, String id, int credits, double rate, double compFee){
super(fName, lName, id, credits, rate);
this.computingFee = compFee;
}
public void computeTuition(){
tuition = (rate + computingFee) * creditNum;
}
public String toString(){
return ("\nOnline Student:\nFirst name:\t\t" + firstName + "\nLast name:\t\t" + lastName + "\nStudent ID:\t\t" + studentID
+ "\nCredits:\t\t" + creditNum + "\nRate:\t\t\t" + super.rate + "\nTuition:\t\t" + super.tuition + "\nComputing Fee:\t\t"
+ getCurrencyInstance() + "\n\n");
}
}
答案 0 :(得分:1)
您需要使用NumberFormat.getCurrencyInstance(...)
,然后使用 来格式化您的值。例如:
public String toString() {
NumberFormat currencyFormat = NumberFormat.getCurrencyInstance(Locale.US);
return "\nOnline Student:\nFirst name:\t\t" + firstName
+ "\nLast name:\t\t" + lastName + "\nStudent ID:\t\t" + studentID
+ "\nCredits:\t\t" + creditNum
+ "\nRate:\t\t\t" + currencyFormat.format(super.rate)
+ "\nTuition:\t\t" + currencyFormat.format(super.tuition)
+ "\nComputing Fee:\t\t" + currencyFormat.format(computingFee) + "\n\n");
}
我强烈建议您使用BigDecimal
作为货币值,而不是double
。我还会重新考虑computeTuition
返还学费,而不仅仅是将其存放在某个领域,但这是另一回事。
答案 1 :(得分:0)
用于快速简便地打印标准货币金额,例如英国语言环境,我使用:
String.format("£%,.02f", pennies / 100.0);
这可能是最短的代码,并为输出提供了货币值格式化的最常见方式,例如:
£0.05
£1.57
£300.00
£34,124.20
£123,456,789.99
显然,如果你需要支持不同的语言环境,那么这还不够(同样,对于最多2 ^ 53的货币值,这只是'好'...)