-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 作为结果。有没有一种简单的方法可以使用数字格式来实现?

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 回答