我很熟悉:
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
是在货币的最小部分定义的,例如一分钱或一分钱。但这对于问题的目的并不重要,会采用格式化浮动值的答案。