如何在Java中设置千位分隔符?
我有一个BigDecimal的字符串表示,想要使用千位分隔符格式化并作为字符串返回。
如何在Java中设置千位分隔符?
我有一个BigDecimal的字符串表示,想要使用千位分隔符格式化并作为字符串返回。
int no = 124750;
String str = String.format("%,d", no);
//str = 124,750
"," 包含特定于地区的分组字符。
这应该可以工作(未经测试,基于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文档,第一行中的强制类型转换在大多数语言环境下都是安全的。
getDecimalFormatSymbols()
的 Javadoc 表示:返回:所需 DecimalFormatSymbols 的副本
。因此,在修改副本后,您应该使用 setDecimalFormatSymbols(theCopy)
。 - java.is.for.desktopnew
并将其设置回格式化程序:`DecimalFormatSymbols customSymbol = new DecimalFormatSymbols();`
`customSymbol.setDecimalSeparator(decimalSeperator.charAt(0));`
`customSymbol.setGroupingSeparator(thousandSeperator);`
`formatter.setDecimalFormatSymbols(customSymbol);`
- Lee Yi HongBigDecimal 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()));
NumberFormat
对象,并使用该对象格式化你的BigDecimal
。BigDecimal
只有一个指定的值,没有指定的格式。 - Joachim Sauer如果您在使用整数数据类型时需要千位分隔符,请使用1。
1. 对于整数数据类型
String.format("%,d\n", 58625)
输出:
58,625
2. 对于浮点数数据类型
String.format("%,.2f",58625.21)
输出:
58,625.21
尝试使用以下代码以巴西使用的格式进行格式化:
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"
parameters.put("REPORT_LOCALE", new Locale("pt", "BR"));
将此参数发送到报告。 - deldevDecimalFormatSymbols 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);
...(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
public String formatStr(float val) {
return String.format(Locale.CANADA, "%,.2f", val);
}
formatStr(2524.2) // 2,254.20
对于小数:
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));
DecimalFormat formatter = (DecimalFormat) NumberFormat.getInstance(Locale.US);
DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols();
symbols.setGroupingSeparator(' ');
formatter.setDecimalFormatSymbols(symbols);
System.out.println(formatter.format(bd.longValue()));
.
作为分隔符,该怎么办? - EnissayLocale.US
已知使用,
作为分隔符)调用format()
方法,然后将,
替换为您自定义的分隔符:String.format(Locale.US, "%,d", n).replace(',', '.')
。 - minipifint
。或者long
。或者BigInteger
。如果要使用double
、float
或BigDecimal
,请使用 f。 - Adowrath