我不确定如何使用数字格式类才能将双格式转换为美元,。
例如,如果学费是 1000,我需要它来打印出 1,000.00 美元。我将输入一段代码来显示我的麻烦在哪里。
公共双 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:tt" + firstName + "nLast name:tt" + lastName + "nStudent ID:tt" + studentID
+ "nCredits:tt" + creditNum + "nRate:ttt" + super.rate + "nTuition:tt" + super.tuition + "nComputing Fee:tt"
+ getCurrencyInstance() + "nn");
}
}
您需要使用 NumberFormat.getCurrencyInstance(...)
,然后使用它来格式化您的值。例如:
public String toString() {
NumberFormat currencyFormat = NumberFormat.getCurrencyInstance(Locale.US);
return "nOnline Student:nFirst name:tt" + firstName
+ "nLast name:tt" + lastName + "nStudent ID:tt" + studentID
+ "nCredits:tt" + creditNum
+ "nRate:ttt" + currencyFormat.format(super.rate)
+ "nTuition:tt" + currencyFormat.format(super.tuition)
+ "nComputing Fee:tt" + currencyFormat.format(computingFee) + "nn");
}
我强烈建议您使用BigDecimal
作为货币值,而不是double
。我也会重新考虑退还学费computeTuition
,而不仅仅是将其存放在田野里,但那是另一回事。
为了快速简便地打印标准货币金额,例如英国区域设置,我使用:
String.format("£%,.02f", pennies / 100.0);
这可能是最短的代码,并为输出提供了最常见的货币值格式化方式,例如:
£0.05
£1.57
£300.00
£34,124.20
£123,456,789.99
显然,如果您需要支持不同的语言环境,那么这还不够(此外,这"仅适用于"高达 2^53 的货币值......