如何在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. 如何設置自定義千位分隔符?
- 5. 千分隔符自定義位置
- 6. QSpinBox千位分隔符
- 7. 千位分隔符printf
- 8. 添加千位分隔符
- 9. 格式千位分隔符
- 10. Apache poi - 千位分隔符
- 11. MYSQL - 千位分隔符
- 12. 千位分隔符在mysql中
- 13. Inno設置格式與千位分隔符
- 14. .Net/F中的千位分隔符#
- 15. 在iPython中設置千位分隔符,而不使用字符串格式
- 16. 如何在read.csv中聲明千位分隔符?
- 17. 如何在Python中爲千位分隔符格式化?
- 18. 如何在C#中指定可選的千位分隔符?
- 19. 如何在bash中插入千位分隔符?
- 20. 在JSplitPane上設置分隔符位置
- 21. 在Android中設置千分隔符EditText無法正常工作
- 22. 千分隔符php
- 23. NSNumberFormatter千分隔符
- 24. 刪除千位分隔符C編程
- 25. ExtJs NumberField使用千位分隔符
- 26. 使用number_format添加千位分隔符
- 27. 千位分隔符的數字格式
- 28. Python腳本插入千位分隔符
- 29. 與千位分隔符報價
- 30. RDLC自定義千位分隔符?
過得好從DB這些價值? – 2011-03-16 10:08:26