您好我正在努力格式化数字,比如NumberFormat.getInstance()的文档说。 (Windows 7,NetBeans,Java 7)
我首先进入区域设置并删除了我们英语,我们英语键盘和一切。我把这一切都归功于法国和法国。我甚至重新启动了我的电脑。我的代码是:
System.setProperty("user.language", "fr");
System.setProperty("user.country", "FR");
System.setProperty("user.language.display", "fr");
System.setProperty("user.country.display", "FR");
System.setProperty("user.language.format", "fr");
System.setProperty("user.country.format", "FR");
Locale locale = new Locale("French", "France");
Locale.setDefault(locale);
Locale.setDefault(Locale.Category.DISPLAY, locale);
Locale.setDefault(Locale.Category.FORMAT, locale);
java.text.NumberFormat nf = java.text.NumberFormat.getInstance();
System.out.println(nf.format(4.5));
尽管如此,该程序仍然打印“4.5”。我不明白,对于法国法国来说这应该是“4,5”。我还需要做什么?
答案 0 :(得分:3)
这是问题所在:
Locale locale = new Locale("French", "France");
应该是:
Locale locale = new Locale("fr", "FR");
或者只使用Locale.FRENCH
。
此外,您无需设置任何属性或更改默认语言环境。只需获取您感兴趣的语言区域NumberFormat
即可。
答案 1 :(得分:2)
比那更容易......
Locale locale = Locale.FRENCH;
将使用法语区域设置初始化变量,
java.text.NumberFormat nf = java.text.NumberFormat.getInstance(locale);
将为您提供该区域设置的NumberFormat。
编辑:当你使用NetBeans时,有两个提示可以避免将来出现这种麻烦:键入
时 Locale locale = new Locale(
后面是ctrl-space NetBeans将弹出一个可能的语句完成列表,每个替代方案都会显示一个显示JavaDoc的小窗口。
或者,当光标在Locale
时,当您按Alt-F1或右键单击Show JavaDoc时,NetBeans将显示带有JavaDoc的浏览器窗口。
Java的库已有详细记录,只需一次击键即可获得文档,这是一个真正的节省时间。
答案 2 :(得分:0)
这是一个非常老的问题,但是我想报告一下,我刚刚发现在OSX的JVM实现中似乎有一个错误(仅Mac的错误)。
这是一小段显示问题的代码:
public static void main(String[] args) {
DecimalFormatSymbols d = DecimalFormatSymbols.getInstance(Locale.getDefault(Locale.Category.FORMAT));
System.out.println(System.getProperty("user.language.format"));
System.out.println(System.getProperty("user.language"));
System.out.println(d.getDecimalSeparator());
System.out.println(d.getGroupingSeparator());
Locale l = Locale.getDefault();
System.out.println("Language: "+l.getLanguage());
System.out.println("Country: "+l.getCountry());
System.out.println("Variant: "+l.getVariant());
System.out.println("Tag: "+l.toLanguageTag());
Currency c = Currency.getInstance(l);
System.out.println("Code: "+c.getCurrencyCode());
NumberFormat nc = DecimalFormat.getCurrencyInstance();
NumberFormat ni = DecimalFormat.getNumberInstance();
}
在我的情况下,输出为:
en
es
.
,
Language: es
Country: ES
Variant:
Tag: es-ES
Code: EUR
在我的操作系统中,我设置了es_ES,但由于存在错误。 JVM系统属性user.language.format
未正确初始化,这是造成一些麻烦的原因。