如何在Java中设置千位分隔符? 我有BigDecimal的字符串表示形式,我想设置千位分隔符并返回String。如何在Java中设置千位分隔符?
回答
这应该工作(未经测试的基础上的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,第一行应该是cast保存大多数语言环境。
未经测试的评论:getDecimalFormatSymbols()的Javadoc说:返回:所需的DecimalFormatSymbols的副本。所以你应该在修改副本后使用'setDecimalFormatSymbols(theCopy)'。 – 2011-09-05 22:43:23
bd.longValue()的文档说“任何小数部分将被丢弃”。所以我不知道这是否是最好的方式来做到这一点,如果你关心精度 – codinguser 2012-07-17 19:29:50
我想你可以使用'new'并将其设置回格式化程序: 'DecimalFormatSymbols customSymbol = new DecimalFormatSymbols();' ' customSymbol.setDecimalSeparator(decimalSeperator.charAt(0));' 'customSymbol.setGroupingSeparator(000Selector);' 'formatter.setDecimalFormatSymbols(customSymbol);' – 2014-08-05 09:50:53
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()));
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"
你也试试这个,如果是JasperReports,强制格式正确: 'parameters.put(“REPORT_LOCALE”,new Locale(“pt”,“BR”));' 发送此参数给报告。 – dellasavia 2015-01-27 18:40:53
这里的最佳答案。 – 2017-04-28 10:24:12
接受的答案,必须真正改变,否则不能正常工作。 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(符号);
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));
- 1. 如何在R中设置千位分隔符?
- 2. 如何设置千位分隔符的小数点后两位?
- 3. 千位分隔符在Python
- 4. QSpinBox千位分隔符
- 5. 千位分隔符printf
- 6. Apache poi - 千位分隔符
- 7. 格式千位分隔符
- 8. 千位分隔符在mysql中
- 9. Inno设置格式与千位分隔符
- 10. .Net/F中的千位分隔符#
- 11. 在iPython中设置千位分隔符,而不使用字符串格式
- 12. 如何在read.csv中声明千位分隔符?
- 13. 如何在C#中指定可选的千位分隔符?
- 14. 如何在bash中插入千位分隔符?
- 15. 在JSplitPane上设置分隔符位置
- 16. 千分隔符php
- 17. NSNumberFormatter千分隔符
- 18. ExtJs NumberField使用千位分隔符
- 19. 使用千位分隔符的空格
- 20. 删除千位分隔符C编程
- 21. 与千位分隔符报价
- 22. Fortran小数点和千位分隔符
- 23. 使用number_format添加千位分隔符
- 24. 千位分隔符与数据绑定
- 25. 千位分隔符不适用
- 26. kendoNomeric格式不带千位分隔符
- 27. 千位分隔符剃刀MVC和JS
- 28. 添加千位分隔符,自动(SWIFT)
- 29. 如何在Arduino上格式化长添加千位分隔符
- 30. 如何在C#中使用cultureinfo设置百万个分隔符(')和千(。)
过得好从DB这些价值? – 2011-03-16 10:08:26