2011-06-29 87 views
1

我不喜歡Java的DecimalFormat類的行爲。爲什麼DecimalFormat忽略分組字符?

我想要做的是在使用德語語言環境(其中「。」是分組字符,而不是小數點!)的文本字段中輸入值「0.23」。

預期的結果將是:

  • 啓用分組:ParseException的,因爲分組字符是在錯誤的地方

  • 與分組禁用: '' ParseException的,因爲字符是不允許的。

實際結果:

  • 與分組啓用:23.0

  • 與分組禁用:0.0

有誰知道更好地執行,或者我應該把這個文件當成Java Bug?

+0

你能告訴我們一些代碼嗎? – adarshr

回答

1

當分組被禁用時,char'。'不能成爲數字的一部分。

從parse NumerFormat的(字符串源)的API:

「的方法,可以不使用整個 文本給定的字符串的」。

因此,該方法將在讀取第一個不能包含數字的字符後停止解析。所以「0.23」總是0.而「0,1.2.3」是0,1

0
Locale.setDefault(Locale.GERMAN); 
    DecimalFormat format = new DecimalFormat(); 
    Number d = format.parse("0.23"); 
    System.out.println(d); 
    d = format.parse("1.000,23"); 
    System.out.println(d); 

這對我有用,輸出是23和1000.23。