2

我正在尝试将 NumberValue 格式化为当前语言环境格式的字符串。

例如,对于 Locale.Germany 这些将是我试图得到的结果:

1   -> 1,00
1.1 -> 1,10
0.1 -> 0,10

我试过的:

String test1 = NumberFormat.getInstance().format(1.1);
// -> 1,1
String test2 = NumberFormat.getCurrencyInstance().format(1.1);
// -> 1,10 €

如果没有货币符号,如何获得与第二个示例相同的格式?或者,我如何确保第一个示例的结果始终具有当前语言环境所需的小数位数?

编辑:由于有些货币有 0,2 或 3 位小数,我认为将小数设置为固定数量不会有正确的结果。

此外,有些货币的符号在前面,有些在后面,因此删除最后一个字符可能也不起作用。

http://apps.cybersource.com/library/documentation/sbc/quickref/currencies.pdf

4

1 回答 1

2

java.util.Currency提供必要的信息。在纯 Java 代码中打印没有货币符号的货币值的合理方法是获取一个通用实例并将其配置为使用由适当对象NumberFormat定义的位数:Currency

NumberFormat numberFormat = NumberFormat.getInstance(myLocale);
Currency currency = Currency.getInstance(myLocale);
numberFormat.setMinimumFractionDigits(currency.getDefaultFractionDigits());

如果您需要特定货币而不是您使用的语言环境的默认货币,请使用替代StringCurrency.getInstance()提供适当的货币代码。

于 2019-01-30T11:50:20.113 回答