我不喜欢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