为什么DecimalFormat会忽略分组字符?

时间:2011-06-29 08:33:11

标签: java number-formatting decimalformat

我不喜欢Java的DecimalFormat类的行为。

我要做的是使用德语区域设置在文本字段中输入值“0.23”(其中'。'是分组字符,而不是小数!!)。

预期结果将是:

  • 启用分组:ParseException,因为分组字符位于错误的位置

  • 禁用分组:ParseException,因为'。'不允许使用角色。

实际结果:

  • 启用分组:23.0

  • 禁用分组:0.0

有没有人知道更好的实现,还是应该将其作为Java Bug提交?

2 个答案:

答案 0 :(得分:1)

当禁用灌浆时,char'。'不能成为数字的一部分。

来自NumerFormat的解析(String source)的API:

  

“该方法可能不会使用整个   给定字符串的文本。“

因此,该方法将在读取第一个不能成为数字一部分的char后停止解析。因此“0.23”始终为0.而“0,1.2.3”为0,1

答案 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。