Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Numberformat最大整数位数不按需要工作_Java_Number Formatting - Fatal编程技术网

Java Numberformat最大整数位数不按需要工作

Java Numberformat最大整数位数不按需要工作,java,number-formatting,Java,Number Formatting,我需要格式化一个数字,最好使用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是

我需要格式化一个数字,最好使用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是否有一种简单的方法来实现这一点?

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

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

您可以在此处查看api: ) )

如果你想过滤掉数字,你必须自己做(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的本地化字符串版本

Wait。你想要1.234,12,完全跳过中间的56?!对的我可以用子字符串等来处理它,但是numberformat可以非常方便地处理它,否则就包括处理多个。或者,我不认为
NumberFormat
能处理这个问题——这是一个非常不标准的要求,只是跳过中间数字,而不是四舍五入。如果可能的话,它可以四舍五入,在这种特殊情况下并不重要。我以为你想跳过数字56,而不是四舍五入。