2013-08-14 8 views

Odpowiedz

52

Spróbuj

// 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); 

Jeśli budujesz aplikacji ze wsparciem I18N należy użyć DecimalFormatSymbols(Locale)

Należy także pamiętać, że decimalFormat.parse może rzucić ParseException więc trzeba go obsłużyć (z try/catch) lub wyrzucić go i niech inna część twojego programu obsłuży go

10

BigDecimal oferuje konstruktor ciągów. Będziesz musiał usunąć wszystkie przecinki z numeru, za pośrednictwem regex lub String filteredString=inString.replaceAll(",","").

Następnie wystarczy zadzwonić BigDecimal myBigD=new BigDecimal(filteredString);

Można również utworzyć NumberFormat i nazywają setParseBigDecimal(true). Następnie parse( da ci BigDecimal bez obawy o ręczne formatowanie.

21

Spróbuj

String str="10,692,467,440,017.120".replaceAll(",",""); 
BigDecimal bd=new BigDecimal(str); 
+0

@jlordo tak Edytowałem swoją odpowiedź –