1

我有一种看法,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

... 需要区域设置来执行其任务的操作称为区域设置敏感,并使用区域设置为用户定制信息。例如,显示数字是一种区域设置敏感操作——数字应根据用户所在国家、地区或文化的习俗/惯例进行格式化......

我看到一个逗号被解释为 another 中的小数点Locale,这真的很奇怪,因为值正在改变。

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

4

2 回答 2

2

我认为 Locale 只是在适当的位置添加逗号,至少在数字的情况下。

不,正如您所见,它也会影响使用的符号。

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

仅当您没有正确使用它们时:) 机器对机器的通信通常应该本地化;通常,如果您确实需要使用文本,最好将 US 用作合理不变的语言环境。

有关DecimalFormatSymbols特定于区域设置的更多详细信息,请参阅。

于 2012-11-26T16:41:14.997 回答
1

我看上面没有错。德国的表示方式12345.45是 12.345,45
,中国的表示方式是 12,345.45 。

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

不,您只需要跟踪输入的语言环境以及您希望它的格式。

于 2012-11-26T16:41:25.080 回答