NumberFormat的哪些字段是特定于语言环境的

时间:2018-03-08 15:03:04

标签: java

我们在Java中发现了一个奇怪的错误。从删除here的人那里猜猜:

en
0.001
cs_CZ
0

花一点时间来猜测这段代码应该返回什么。现在看看它返回的内容:

    for (final Locale locale : Locale.getAvailableLocales()) {
        final int maximumFractionDigits = NumberFormat.getInstance(locale).getMaximumFractionDigits();
        if (maximumFractionDigits != 3) {
            System.out.println(locale.getDisplayCountry() + " -> " + maximumFractionDigits);
        }
    }

是的," 0.001"英语和" 0" (而不是" 0,001")捷克语。那为什么会这样?以下代码给出了提示:

Czech Republic -> 2
Lithuania -> 2

它返回:

maximumFractionDigits

因此,某些原因NumberFormat是特定于语言环境的。我们和我们的捷克代表都不知道为什么。

除了这个随机行为的所有挫折之外:NumberFormat的哪些其他字段也是特定于语言环境的,即每次我们需要{{1}}时都必须初始化?

(花了整整一个工作日试图弄清楚这个错误之后,我倾向于问"为什么",但这可能是基于这两种方式的意见。)

PS。我们用不同的Java版本运行程序。由于某种原因,它似乎在更新51和112中工作,但在更新45,131,144,152和161中被破坏.Java 9似乎完全是时髦的。

0 个答案:

没有答案