Java Numberformat最大整数位数不按需要工作
我需要格式化一个数字,最好使用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 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,而不是四舍五入。