我正在尝试将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
答案 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()
并提供适当的货币代码。