如何在 Java 中设置数千个分隔符? 我有一个 BigDecimal 的 String 表示形式,我想用一个数千个分隔符格式化它,并返回为 String。
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()));
这应该可以工作(未经测试,基于 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,应该为大多数地区保存第一行中的强制转换。
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);
您可以使用格式化函数与“ ,”;
int no = 124750; String str = String.format("%,d", no); //str = 124,750
“ ,”包括区域设置特定的分组字符。
医生
试试这段代码的格式,就像巴西使用的那样:
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"
接受的答案必须真正改变,否则不起作用。 GetDecimalFormatSymbols制作了一个防御性的副本。因此,
新的线路是这一个: SetDecimalFormatSymbols (符号) ;
NumberFormat nf = DecimalFormat.getInstance(myLocale); DecimalFormatSymbols customSymbol = new DecimalFormatSymbols(); customSymbol.setDecimalSeparator(','); customSymbol.setGroupingSeparator(' '); ((DecimalFormat)nf).setDecimalFormatSymbols(customSymbol); nf.setGroupingUsed(true);
对于 小数:
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));
如上所述,下面的 链接为您提供了特定的国家代码,以允许 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
如果对 Integer 数据类型使用千分隔符,请使用1。
1. 对于整数数据类型
String.format("%,d\n", 58625)
产出:
58,625
2. 浮点数据类型
String.format("%,.2f",58625.21)
58,625.21
public String formatStr(float val) { return String.format(Locale.CANADA, "%,.2f", val); } formatStr(2524.2) // 2,254.20
使用下划线(_)使 代码本身中的文字数值更易读:
_
int example = 12_004_953; // Twelve million four thousand nine hundred fifty-three