我不喜歡Java的DecimalFormat類的行爲。爲什麼DecimalFormat忽略分組字符?
我想要做的是在使用德語語言環境(其中「。」是分組字符,而不是小數點!)的文本字段中輸入值「0.23」。
預期的結果將是:
啓用分組:ParseException的,因爲分組字符是在錯誤的地方
與分組禁用: '' ParseException的,因爲字符是不允許的。
實際結果:
與分組啓用:23.0
與分組禁用:0.0
有誰知道更好地執行,或者我應該把這個文件當成Java Bug?
我不喜歡Java的DecimalFormat類的行爲。爲什麼DecimalFormat忽略分組字符?
我想要做的是在使用德語語言環境(其中「。」是分組字符,而不是小數點!)的文本字段中輸入值「0.23」。
預期的結果將是:
啓用分組:ParseException的,因爲分組字符是在錯誤的地方
與分組禁用: '' ParseException的,因爲字符是不允許的。
實際結果:
與分組啓用:23.0
與分組禁用:0.0
有誰知道更好地執行,或者我應該把這個文件當成Java Bug?
當分組被禁用時,char'。'不能成爲數字的一部分。
從parse NumerFormat的(字符串源)的API:
「的方法,可以不使用整個 文本給定的字符串的」。
因此,該方法將在讀取第一個不能包含數字的字符後停止解析。所以「0.23」總是0.而「0,1.2.3」是0,1
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。
你能告訴我們一些代碼嗎? – adarshr