Как я могу форматировать номер строки, чтобы иметь запятые и круглые?

Каков наилучший способ отформатировать следующее число, которое передается мне как String?

String number = "1000500000.574" //assume my value will always be a String 

Я хочу, чтобы это была строка со значением: 1,000,500,000.57

Как я могу отформатировать его как таковой?

Возможно, вы захотите посмотреть на class DecimalFormat ; он поддерживает различные локали (например: в некоторых странах, которые будут отформатированы как 1.000.500.000,57 вместо).

Вам также нужно преобразовать эту строку в число, это можно сделать с помощью:

 double amount = Double.parseDouble(number); 

Пример кода:

 String number = "1000500000.574"; double amount = Double.parseDouble(number); DecimalFormat formatter = new DecimalFormat("#,###.00"); System.out.println(formatter.format(amount)); 

После того, как вы преобразовали строку в число, вы можете использовать

 // format the number for the default locale NumberFormat.getInstance().format(num) 

или

 // format the number for a particular locale NumberFormat.getInstance(locale).format(num) 

Это также может быть выполнено с помощью String.format (), что может быть проще и / или более гибким, если вы форматируете несколько номеров в одной строке.

  String number = "1000500000.574"; Double numParsed = Double.parseDouble(number); System.out.println(String.format("The input number is: %,.2f", numParsed)); // Or String numString = String.format("%,.2f", numParsed); 

Для строки формата «%. 2f» – «,» означает отдельные цифровые группы с запятыми, а «.2» означает округление до двух мест после десятичной.

Для справки о других параметрах форматирования см. https://docs.oracle.com/javase/tutorial/java/data/numberformat.html.

Я создал свою собственную утилиту форматирования. Это очень быстро при обработке форматирования наряду с предоставлением вам многих функций 🙂

Он поддерживает:

  • Форматирование запятой Например, 1234567 становится 1,234,567.
  • Префикс «Тысяча (K), Миллион (M), Миллиард (B), Trillion (T)».
  • Точность от 0 до 15.
  • Прецизионное повторное калибрование (означает, что если вы хотите 6-значную точность, но имеете только 3 доступных цифры, это заставляет ее 3).
  • Снижение префикса (означает, что если префикс, который вы выбираете, слишком велик, он снижает его до более подходящего префикса).

Код можно найти здесь . Вы называете это следующим образом:

 public static void main(String[]) { int settings = ValueFormat.COMMAS | ValueFormat.PRECISION(2) | ValueFormat.MILLIONS; String formatted = ValueFormat.format(1234567, settings); } 

Следует также отметить, что это не поддерживает десятичную поддержку, но очень полезно для целочисленных значений. В приведенном выше примере в качестве вывода будет отображаться «1.23M». Возможно, я мог бы добавить десятичную поддержку, но не видел слишком много пользы для нее, так как тогда я мог бы объединить это в class типа BigInteger, который обрабатывает сжатые char [] массивы для математических вычислений.

 public void convert(int s) { System.out.println(NumberFormat.getNumberInstance(Locale.US).format(s)); } public static void main(String args[]) { LocalEx n=new LocalEx(); n.convert(10000); } 

вы также можете использовать ниже решение –

 public static String getRoundOffValue(double value){ DecimalFormat df = new DecimalFormat("##,##,##,##,##,##,##0.00"); return df.format(value); } 

Вы можете сделать все преобразование в одной строке, используя следующий код:

 String number = "1000500000.574"; String convertedString = new DecimalFormat("#,###.##").format(Double.parseDouble(number)); 

Последние два символа # в конструкторе DecimalFormat также могут быть 0s. В любом случае.

Вот самый простой способ добраться туда:

 String number = "10987655.876"; double result = Double.parseDouble(number); System.out.println(String.format("%,.2f",result)); 

выход: 10 987 655,88

Первый ответ работает очень хорошо, но для ZERO / 0 он будет отформатирован как .00

Следовательно, формат #, ## 0.00 работает для меня хорошо. Всегда проверяйте разные номера, такие как 0/100 / 2334.30, и отрицательные числа перед развертыванием в производственную систему.

Этот class предназначен для простого индийского форматирования цены

 public class Test { public static void main (String a[]){ System.out.println(priceFormatter("10023")); } /** * This method is to convert the price into Indian price * separator format * @param inputPrice * @return */ public static String priceFormatter(String inputPrice){ try { if(!isNumeric(inputPrice)){ return inputPrice; } // to check if the number is a decimal number String newPrice = "",afterDecimal = ""; if(inputPrice.indexOf('.') != -1){ newPrice = inputPrice.substring(0,inputPrice.lastIndexOf('.')); afterDecimal = inputPrice.substring(inputPrice.lastIndexOf('.')); }else{ newPrice = inputPrice; } int length = newPrice.length(); if (length < 4) { return inputPrice; } // to check whether the length of the number is even or odd boolean isEven = false; if (length % 2 == 0) { isEven = true; } // to calculate the comma index char ch[] = new char[length + (length / 2 - 1)]; if (isEven) { for (int i = 0, j = 0; i < length; i++) { ch[j++] = inputPrice.charAt(i); if (i % 2 == 0 && i < (length - 3)) { ch[j++] = ','; } } } else { for (int i = 0, j = 0; i < length; i++) { ch[j++] = inputPrice.charAt(i); if (i % 2 == 1 && i < (length - 3)) { ch[j++] = ','; } } } // conditional return based on decimal number check return afterDecimal.length() > 0 ? String.valueOf(ch) + afterDecimal : String.valueOf(ch); } catch(NumberFormatException ex){ ex.printStackTrace(); return inputPrice; } catch (Exception e) { e.printStackTrace(); return inputPrice; } } } 
  • Как strtok () разбивает строку на токены в C?
  • Преобразование wstring в строку, закодированную в UTF-8
  • Почему .ToString () в нулевой строке вызывает нулевую ошибку, когда .ToString () отлично работает в nullable int с нулевым значением?
  • Как преобразовать / разобрать из String в char в java?
  • Неизвестная escape-последовательность для строки пути, содержащей обратную косую черту
  • Как вернуть строковое значение из функции Bash
  • std :: string форматирование, подобное sprintf
  • Что такое интерпретация Java String?
  • Как реализуется std :: string?
  • Как объединить строки?
  • Форматирование CSV с разделителями-запятыми, чтобы заставить Excel интерпретировать значение как строку
  • Давайте будем гением компьютера.