Java-NumberValue转换为不带货币符号的字符串

时间:2019-01-30 11:28:22

标签: java locale number-formatting

我正在尝试将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

1 个答案:

答案 0 :(得分:1)

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

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

如果您需要一种特定的货币,而不是您使用的语言环境的默认货币,请改用the String override of Currency.getInstance()并提供适当的货币代码。