了解java.util.Locale中的怪输出(Understanding the strange

2019-10-17 10:17发布

我有一个看法,即Locale是只是在数量上的情况下,在适当的位置,至少加入逗号。 但我看到了什么,我已经尝试了不同的输出。

我尝试以下,

public static void main(String[] args) {
    DecimalFormat df = null;

    df = (DecimalFormat) DecimalFormat.getInstance(Locale.CHINESE);
    System.out.println("Locale.CHINESE "+df.format(12345.45));

    df = (DecimalFormat) DecimalFormat.getInstance(Locale.GERMAN);
    System.out.println("Locale.GERMAN  "+df.format(12345.45));
}

输出:

Locale.CHINESE 12,345.45
Locale.GERMAN  12.345,45

如果你仔细看一下逗号,你会看到一个主要区别。

现在, 对于java.util.Locale中的javadoc说

......需要一个Locale来执行其任务的操作称为语言环境敏感和使用区域设置来定制信息的用户。 例如,显示一个数是语言环境敏感的操作 - 数应根据海关被格式化/用户的国家,地区或文化的约定......

我看到一个逗号被解释为在另一个小数点Locale ,这实在是一件奇怪的事,作为值被改变。

所以,帮助我理解这一点。 究竟什么是Locale ? 会不会在输出的急剧变化导致代码/数据主要问题?

Answer 1:

我有一个看法,即区域设置是只是在数量上的情况下,在适当的位置,至少加入逗号。

不,它会影响符号使用为好,如您所见。

所以,帮助我理解这一点。 究竟什么是语言环境? 会不会在输出的急剧变化导致代码/数据主要问题?

只有当你不正确地使用它们:)机器对机器通信一般不应本地化; 通常,如果你确实需要使用的文字,最好使用美国作为一个合理的不变的语言环境。

DecimalFormatSymbols为的是什么语言环境特定的详细信息。



Answer 2:

我看没有错以上。 代表德国方式12345.45是12.345,45
并表示相同数量的中国人的方式是12,345.45。

所以,帮助我理解这一点。 究竟什么是语言环境? 会不会在输出的急剧变化导致代码/数据主要问题?

没有也不会,你只需要不断输入的语言环境,以及如何你想它格式化的轨道。



文章来源: Understanding the strange output of java.util.Locale