2010-01-19 41 views
4

問題:在使用給定的語言環境時,我想知道哪個字符將用於小數分組?Java i18n:在哪裏獲得某個語言環境的小數分組字符

我嘗試下面的代碼:

Locale locale = new Locale("Finnish", "fi"); 
DecimalFormat format = (DecimalFormat) DecimalFormat.getInstance(locale); 
System.out.println(format.format(12345678.123)); 

這裏的問題,似乎區域設置的參數不是正確的,但我覺得無論如何必須有一些地方,這些信息可以查找無需編寫程序。

似乎東西不是從我的機器上的區域設置中提取的,因爲我在Windows控制面板中更改了德語的字符,但java程序中沒有任何更改。

回答

11

編輯:問題是你構建你的Locale的方式。儘量只:

Locale locale = new Locale("fi"); 

回答關於你如何獲得分離器編程的問題,你會使用:

Locale locale = new Locale("fi"); 
DecimalFormat format = (DecimalFormat) NumberFormat.getInstance(locale); 
DecimalFormatSymbols symbols = format.getDecimalFormatSymbols(); 
char groupingChar = symbols.getGroupingSeparator(); 
+0

感謝有關語言環境對象的提示! 關於分組分隔符的事情是,我很好奇從何處獲取這些信息。存儲它的地方必須有某種文件。 – 2010-01-19 09:48:22

+1

我建議你看看源代碼 - 這是非常方便的,它可以檢查:) – 2010-01-19 09:56:13

1

的意見,期待在源已經太有挑戰性...

這裏的地方的東西是可以找到:

內的JDK的rt.jar,在包sun.text.resources有文件「FormatData_ [ISO代碼] .class」文件中, Ť他包含了十進制分組字符和其他相關值,可以通過反編譯來查看。 Java反編譯器(http://java.decompiler.free.fr)對此非常有幫助。

相關問題