1

Java の DecimalFormat クラスの動作が好きではありません。

私がやろうとしているのは、ドイツ語ロケールを使用してテキスト フィールドに「0.23」の値を入力することです (「.」は小数点ではなくグループ化文字です!!)。

期待される結果は次のとおりです。

  • グループ化が有効な場合: グループ化文字が間違った場所にあるため、ParseException

  • グループ化が無効な場合: ParseException、'.' 文字は使用できません。

実結果:

  • グループ化が有効な場合: 23.0

  • グループ化を無効にした場合: 0.0

より良い実装を知っている人はいますか、それともこれを Java Bug として報告する必要がありますか?

4

2 に答える 2

1

グループ化が無効になっている場合、文字「.」数字の一部にすることはできません。

NumerFormat の parse(String source) の API より:

「メソッドは、指定された文字列のテキスト全体を使用しない場合があります。」

したがって、メソッドは、数値の一部ではない最初の文字を読み取った後、解析を停止します。したがって、「0.23」は常に 0 であり、「0,1.2.3」は 0,1 です。

于 2011-06-29T11:45:37.783 に答える
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です。

于 2011-06-29T12:30:37.887 に答える