如何在Java中设置千位分隔符? 我有BigDecimal的String表示,我想设置千位分隔符并返回String。
答案 0 :(得分:204)
您可以将格式化功能与“,”;
一起使用int no = 124750;
String str = String.format("%,d", no);
//str = 124,750
“,”包括特定于语言环境的分组字符。
答案 1 :(得分:93)
这应该有效(未经测试,基于JavaDoc):
DecimalFormat formatter = (DecimalFormat) NumberFormat.getInstance(Locale.US);
DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols();
symbols.setGroupingSeparator(' ');
formatter.setDecimalFormatSymbols(symbols);
System.out.println(formatter.format(bd.longValue()));
根据JavaDoc,第一行中的强制转换应该保存为大多数语言环境。
答案 2 :(得分:48)
BigDecimal bd = new BigDecimal(300000);
NumberFormat formatter = NumberFormat.getInstance(new Locale("en_US"));
System.out.println(formatter.format(bd.longValue()));
修改强>
要获取自定义分组分隔符(例如空格),请执行以下操作:
DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance();
symbols.setGroupingSeparator(' ');
DecimalFormat formatter = new DecimalFormat("###,###.##", symbols);
System.out.println(formatter.format(bd.longValue()));
答案 3 :(得分:14)
尝试使用此代码格式化巴西使用的格式:
DecimalFormat df = new DecimalFormat(
"#,##0.00",
new DecimalFormatSymbols(new Locale("pt", "BR")));
BigDecimal value = new BigDecimal(123456.00);
System.out.println(df.format(value.floatValue()));
// results: "123.456,00"
答案 4 :(得分:5)
DecimalFormatSymbols formatSymbols = new DecimalFormatSymbols();
formatSymbols.setDecimalSeparator('|');
formatSymbols.setGroupingSeparator(' ');
String strange = "#,##0.###";
DecimalFormat df = new DecimalFormat(strange, formatSymbols);
df.setGroupingSize(4);
String out = df.format(new BigDecimal(300000).doubleValue());
System.out.println(out);
答案 5 :(得分:4)
NumberFormat nf = DecimalFormat.getInstance(myLocale);
DecimalFormatSymbols customSymbol = new DecimalFormatSymbols();
customSymbol.setDecimalSeparator(',');
customSymbol.setGroupingSeparator(' ');
((DecimalFormat)nf).setDecimalFormatSymbols(customSymbol);
nf.setGroupingUsed(true);
答案 6 :(得分:3)
接受的答案必须真正改变,否则无法正常工作。 getDecimalFormatSymbols 制作防御性副本。因此,
DecimalFormat formatter = (DecimalFormat) NumberFormat.getInstance(Locale.US);
DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols();
symbols.setGroupingSeparator(' ');
formatter.setDecimalFormatSymbols(symbols);
System.out.println(formatter.format(bd.longValue()));
新行是这一行: formatter.setDecimalFormatSymbols(symbols);
答案 7 :(得分:3)
public String formatStr(float val) {
return String.format(Locale.CANADA, "%,.2f", val);
}
formatStr(2524.2) // 2,254.20
答案 8 :(得分:2)
小数:
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setGroupingSeparator(' ');
DecimalFormat dfDecimal = new DecimalFormat("###########0.00###");
dfDecimal.setDecimalFormatSymbols(symbols);
dfDecimal.setGroupingSize(3);
dfDecimal.setGroupingUsed(true);
System.out.println(dfDecimal.format(number));
答案 9 :(得分:0)
如上所述,下面的link为您提供了特定的国家/地区代码,以允许Java将数字本地化。每个国家都有自己的风格。
在上面的链接中,您将找到应该在此处输入的国家/地区代码:
...(new Locale(<COUNTRY CODE HERE>));
例如,瑞士的数字格式如下:
1000.00-> 1'000.00
要实现这一目标,请遵循以下代码:
NumberFormat nf = NumberFormat.getNumberInstance(new Locale("de","CH"));
nf.setMaximumFractionDigits(2);
DecimalFormat df = (DecimalFormat)nf;
System.out.println(df.format(1000.00));
结果符合预期:
1'000.00
答案 10 :(得分:0)
如果您要对整数数据类型使用千位分隔符,请使用1。
String.format(“%,d \ n”,58625)和输出将是 58,625