我有一种感觉,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
如果仔细查看逗号,可以看到一个主要区别。
现在,javadoc for java.util.Locale说
...需要Locale执行其任务的操作称为区域设置敏感,并使用Locale 为用户定制信息。例如,显示数字是区域设置敏感操作 - 数字 应按照格式进行格式化 用户所在国家,地区或文化的习俗/惯例......
我看到另一个Locale
中的逗号被解释为小数点,这真是一个奇怪的事情,因为值正在改变。
所以,帮助我理解这一点。究竟是什么Locale
?输出的急剧变化不会导致代码/数据出现重大问题吗?
答案 0 :(得分:2)
我认为Locale只是在适当的位置添加逗号,至少在数字的情况下。
不,它会影响您使用的符号,如您所见。
所以,帮助我理解这一点。 Locale究竟是什么?输出的急剧变化不会导致代码/数据出现重大问题吗?
只有当你没有正确使用它们时:)机器对机器的通信通常应该不进行本地化;通常,如果您确实需要使用文本,最好将US用作合理不变的语言环境。
有关特定于语言环境的更多详细信息,请参阅DecimalFormatSymbols
。
答案 1 :(得分:1)
我认为以上没有错。德语代表12345.45
的方式是12.345,45
中国代表相同数字的方式是12,345.45。
所以,帮助我理解这一点。 Locale究竟是什么?不会激烈的 输出的变化会导致代码/数据出现重大问题吗?
不,你不会只需要跟踪输入的语言环境以及你希望它的格式化。