-1

理想的にはnumberformatを使用して、数値をフォーマットする必要があります。現在私は持っています:

    NumberFormat nf = NumberFormat.getInstance();
    nf.setMaximumFractionDigits(2);
    nf.setMaximumIntegerDigits(4);
    System.out.println(nf.format(123456.1234));

この結果は 3.456,12 になりますが、結果として 1.234,12 が必要です。numberformat でそれを達成する簡単な方法はありますか?

4

1 に答える 1

1

setMaximumFractionDigits() および setMaximumIntegerDigits() は、フォーマットされた数値 (それぞれ小数部分と整数部分) に表示される最大桁数を定義します。

フォーマットされた文字列の一部となる数字に上限を設定しません。

ここで API を確認できます: http://docs.oracle.com/javase/7/docs/api/java/text/NumberFormat.html#setMaximumFractionDigits(int ) http://docs.oracle.com/javase/7 /docs/api/java/text/NumberFormat.html#setMaximumIntegerDigits(int )

数字を除外したい場合は、自分で行う必要があります(afaik)。簡単な例を次に示します。

    String[] parts = "123456.1234".split("\\.");

    String integerPart = parts[0].replaceAll("[^0-4]", "");
    String decimalPart = parts[1].replaceAll("[^0-2]", "");

    float filteredFloat = Float.parseFloat(integerPart + "." + decimalPart);

    NumberFormat nf = NumberFormat.getInstance();
    System.out.println(nf.format(filteredFloat));

これにより、1234.12 のローカライズされた文字列バージョンが返されます。

于 2012-11-14T17:08:48.040 に答える