java 中的货币输出取消数字格式类



我不确定如何使用数字格式类才能将双格式转换为美元,。

例如,如果学费是 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 的货币值......

最新更新