我知道如何在printf
中使用逗号作为分组分隔符来打印格式之类的值
1,000,000.00
按照我使用命令
的方式打印 System.out.printf ("%,.2f", value);
但如何使用空格作为分组分隔符来格式化值
1 000 000.00
我试图找到解决方案但使用DecimalFormat
的解决方案现在看起来让我复杂化(初学者级别)。
是否有使用逗号的简单方法?
答案 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("\\.", " ");
方法。这将用空格替换写在那里的所有点