格式化货币的值

时间:2014-03-15 20:06:48

标签: java

我很熟悉:

import java.text.NumberFormat;
import java.util.Locale;

Locale locale = new Locale("en", "UK");
NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
System.out.println(fmt.format(120.00));

作为一种方法,我只有java.util.Currency,而不是语言环境。似乎无法从Currency获取区域设置,只是相反。

我现在已经这样做了:

public String format(Currency currency, long value) {
    int defaultFractionDigits = currency.getDefaultFractionDigits();
    NumberFormat format = NumberFormat.getInstance();       
    format.setMinimumFractionDigits(defaultFractionDigits);
    format.setMaximumFractionDigits(defaultFractionDigits);
    double divider = Math.pow(10, defaultFractionDigits);
    return String.format("%s %s", currency.getSymbol(Locale.getDefault()), format.format(value/divider));
}

所以我想知道是否有一种更清晰的方式?

注意value是在货币的最小部分定义的,例如一分钱或一分钱。但这对于问题的目的并不重要,会采用格式化浮动值的答案。

1 个答案:

答案 0 :(得分:1)

我建议您查看Joda Money