提问人:blekione 提问时间:11/9/2012 最后编辑:Subhrajyoti Majumderblekione 更新时间:11/9/2012 访问量:6442
printf 中的空格作为分组分隔符
Space as grouping separator in printf
问:
我知道如何使用逗号作为分组分隔符以如下格式打印值printf
1,000,000.00
以这种方式打印它,我使用命令
System.out.printf ("%,.2f", value);
但是如何使用空格作为分组分隔符来格式化值,例如1 000 000.00
我试图找到解决方案,但现在使用解决方案对我来说很复杂(初级水平)。有没有像逗号示例一样简单的方法来做到这一点?DecimalFormat
答:
0赞
SomeJavaGuy
11/9/2012
#1
如果你想这样做,你应该使用 Decimalformat 这将是你的解决方案
十进制格式 f = 新 DecimalFormat(“#0,000.00”);
f.格式(13000);
这里稍微解释一下: 逗号后面的零数量将为您提供 DecimalFormat 将在其中插入一个点的数字数量。点后面的零量是 DecimalFormat 将写入的小数点数
编辑:哦,我刚刚看到你想在那里有空格:
因为 f.format 将返回一个 String,所以您可以简单地添加.replace("\\.", " ");
方法。这将用空格替换其中写的所有点
评论
0赞
blekione
11/9/2012
我理解它,它工作正常,但逗号。当我尝试将逗号更改为空格时,它不起作用。显示没有分组分隔符的输出,例如' '
#0 000.00
1000000.00
0赞
SomeJavaGuy
11/9/2012
请参阅下面的答案,它们都准备好简化为 DecimalFormatSymbols
1赞
SomeJavaGuy
11/9/2012
即便如此,这个DecimalFormat f = new DecimalFormat("0,000.00"); DecimalFormatSymbols d = f.getDecimalFormatSymbols(); d.setGroupingSeparator(' '); f.setDecimalFormatSymbols(d); String t = f.format(3000000); System.out.println(t);
8赞
jalopaba
11/9/2012
#2
快速回答:
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赞
Hummeling Engineering BV
2/5/2019
请注意,快速答案并非在所有区域设置中都有预期的结果。句点在一个区域设置中表示小数分隔符,在另一个区域设置中表示分组字符。replace()
.
1赞
KrHubert
11/9/2012
#3
Printf 不处理这个问题。请改用 println。来自 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
但我没有时间更深入地研究为什么这些课程是不同的。享受阅读:)
评论
0赞
blekione
11/9/2012
“奇怪”的例子,但我想我理解它。谢谢
评论