我需要格式化数字,理想情况下使用数字格式。目前我有:
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(2);
nf.setMaximumIntegerDigits(4);
System.out.println(nf.format(123456.1234));
这导致3.456,12 但是,我希望得到1.234,12。有没有一种简单的方法可以用numberformat来实现它?
答案 0 :(得分: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));
这应返回本地化的String版本1234.12