【发布时间】:2019-06-23 16:09:34
【问题描述】:
我正在尝试将 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.1 -> 1,01有什么意义?这是什么逻辑? -
@ernest_k,抱歉,打错了。我会更正它(下面的也是)。
-
NumberFormat instance = NumberFormat.getInstance(); instance.setMinimumFractionDigits(2); -
@davidxxx 这适用于所有语言环境/货币吗?我曾假设有些可能会使用更多或更少的小数。编辑:我找到了一个列表,有一些列表有 0 或 3:apps.cybersource.com/library/documentation/sbc/quickref/…
-
@dkb,感谢您的链接,但我似乎遗漏了一些东西 - 该示例似乎使用与我的第二个示例相同的功能,结果相同。
标签: java locale number-formatting