Numberformat最大整数数字不能根据需要工作

时间:2012-11-14 16:40:59

标签: java number-formatting

我需要格式化数字,理想情况下使用数字格式。目前我有:

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

这导致3.456,12 但是,我希望得到1.234,12。有没有一种简单的方法可以用numberformat来实现它?

1 个答案:

答案 0 :(得分:1)

setMaximumFractionDigits()和setMaximumIntegerDigits()定义将在格式化数字上显示的最大位数(分别对于小数部分和整数部分)。

它们不会将上限设置为将成为格式化字符串一部分的数字。

你可以在这里查看api: http://docs.oracle.com/javase/7/docs/api/java/text/NumberFormat.html#setMaximumFractionDigits(inthttp://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));

这应返回本地化的String版本1234.12