2011-06-29 47 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。