在printf中作为分组分隔符的空格

时间:2012-11-09 10:58:36

标签: java

我知道如何在printf中使用逗号作为分组分隔符来打印格式之类的值 1,000,000.00

按照我使用命令

的方式打印

System.out.printf ("%,.2f", value);

但如何使用空格作为分组分隔符来格式化值 1 000 000.00

我试图找到解决方案但使用DecimalFormat的解决方案现在看起来让我复杂化(初学者级别)。 是否有使用逗号的简单方法

3 个答案:

答案 0 :(得分:8)

快速回答:

String result = String.format("%,.2f", value).replace(".", " ");
System.out.println(result);

(假设您使用的是Java 1.5或更高版本)。

使用DecimalFormat

DecimalFormat formatter = (DecimalFormat) NumberFormat.getInstance(Locale.getDefault());
DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols();
String.format(symbols.getGroupingSeparator(), ' ')

甚至更好:

symbols.setGroupingSeparator(' ');
f = new DecimalFormat("###,###.00", symbols);
System.out.println(f.format(value));

答案 1 :(得分:1)

Printf无法解决这个问题。使用println insted。 oracle的示例:

DecimalFormatSymbols unusualSymbols = new DecimalFormatSymbols(currentLocale);
unusualSymbols.setDecimalSeparator('|');
unusualSymbols.setGroupingSeparator('^');

String strange = "#,##0.###";
DecimalFormat weirdFormatter = new DecimalFormat(strange, unusualSymbols);
weirdFormatter.setGroupingSize(4);

String bizarre = weirdFormatter.format(12345.678);
System.out.println(bizarre);

out : 1^2345|678

将Float转换为String:

println使用FloatingDecimal

printf使用FormattedFloatingDecimal

但我没有时间深入研究为什么这些课程有所不同。享受阅读:))

答案 2 :(得分:0)

如果你想这样做,你应该使用Decimalformat 这将是你的解决方案

  

DecimalFormat f = new DecimalFormat(“#0,000.00”);

     

f.format(13000);

在这里稍作阐述: 逗号后面的零数量将为您提供DecimalFormat将在其中插入点的数字量。点后面的零点是DecimalFormat将写入的小数位数

编辑:哦,我刚看到你想在那里有空位:

因为f.format会返回一个String,你可以简单地添加.replace("\\.", " ");

方法。这将用空格替换写在那里的所有点