У меня есть эта строка: 10,692,467,440,017.120 (это сумма).
Я хочу разобрать его в BigDecimal.
Проблема в том, что я пробовал как DecimalFormat, так и NumbeFormat напрасно.
Любая помощь?
Ответ 1
Попробуйте это
// Create a DecimalFormat that fits your requirements
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setGroupingSeparator(',');
symbols.setDecimalSeparator('.');
String pattern = "#,##0.0#";
DecimalFormat decimalFormat = new DecimalFormat(pattern, symbols);
decimalFormat.setParseBigDecimal(true);
// parse the string
BigDecimal bigDecimal = (BigDecimal) decimalFormat.parse("10,692,467,440,017.120");
System.out.println(bigDecimal);
Если вы создаете приложение с поддержкой I18N, вы должны использовать DecimalFormatSymbols(Locale)
Также имейте в виду, что decimalFormat.parse может вызывать ParseException, поэтому вам нужно обработать его (с помощью try/catch) или выбросить его, а другая часть вашей программы обработать его
Вы можете напрямую инициировать BigDecimal с помощью String;)
Пример:
BigDecimal bigDecimalValue= new BigDecimal("0.5");
Ответ 4
BigDecimal предлагает конструктор строк. Вам нужно будет удалить все запятые из числа, через регулярное выражение или String filteredString=inString.replaceAll(",","").
Затем вы просто вызываете BigDecimal myBigD=new BigDecimal(filteredString);
Вы также можете создать NumberFormat и вызвать setParseBigDecimal(true). Затем parse( предоставит вам BigDecimal, не беспокоясь о форматировании вручную.