Как установить разделитель тысяч в Java?
Как установить разделитель тысяч в Java? У меня есть строковое представление BigDecimal, я хочу установить разделитель тысяч и вернуть строку.
8 ответов:
Это должно работать (непроверено, на основе 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, приведение в первой строке должно быть сохранено для большинства локалей.
вы можете использовать функцию формат с ",";
int no = 124750; String str = String.format("%,d", no); //str = 124,750
", " включает символы группирования, зависящие от локали.
BigDecimal bd = new BigDecimal(300000); NumberFormat formatter = NumberFormat.getInstance(new Locale("en_US")); System.out.println(formatter.format(bd.longValue()));
EDIT
чтобы получить пользовательский разделитель группировки, такой как пробел, сделайте следующее:
DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(); symbols.setGroupingSeparator(' '); DecimalFormat formatter = new DecimalFormat("###,###.##", symbols); System.out.println(formatter.format(bd.longValue()));
попробуйте этот код отформатировать как используется в Бразилии:
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"
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);
принятый ответ должен быть действительно изменен, иначе не работает. Элемент getDecimalFormatSymbols делает защитную копию. Таким образом,
DecimalFormat formatter = (DecimalFormat) NumberFormat.getInstance(Locale.US); DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols(); symbols.setGroupingSeparator(' '); formatter.setDecimalFormatSymbols(symbols); System.out.println(formatter.format(bd.longValue()));
новая строка вот такая:праматерии.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));