2017-07-05 3 views
-2

Ich versuche, eine Zeichenfolge in einer Spalte mit Datentyp Big Dezimal zu speichern.ConvertString zu großen Dezimal in JAVA

String a = transaction.getBeneAmt(); 
log.info(a); 
tran.setTransAmt(new BigDecimal(transaction.getBeneAmt())); 
tranRepository.saveAndFlush(trangloTran); //save into database 

Aber ich bekomme

2017-07-05 18:04:19 [http-nio-8080-exec-1] INFO ApiController - IDR 3,000,000.00 
2017-07-05 18:04:19 [http-nio-8080-exec-1] ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NumberFormatException] with root cause 
java.lang.NumberFormatException: null 
    at java.math.BigDecimal.<init>(BigDecimal.java:494) 
    at java.math.BigDecimal.<init>(BigDecimal.java:383) 
    at java.math.BigDecimal.<init>(BigDecimal.java:806) 
+0

John, die Sie wirklich ** Big Dezimal zu String konvertieren möchten **? Wie ich in Ihrem Code sehen kann, dass Sie versuchen, ** String zu Big Decimal zu konvertieren ** –

+0

Wie viel Ihres Logeintrags ist der Wert von 'a'? (Enthält es die IDR?) Ich glaube nicht, dass BigDecimal tausende Trennzeichen behandeln kann. –

+0

https://stackoverflow.com/questions/13900204/bigdecimal-to-string Ähnliche Fragen. –

Antwort

1

Das Problem hier ist, dass Ihre String alphabetische Zeichen enthält, so dass es nicht möglich sein wird, es zu BigDecimal zu konvertieren, das ist, warum Sie NumberFormatException bekam.

Sie müssen diese Buchstaben ersetzen, bevor Sie versuchen, es zu konvertieren:

String a = transaction.getBeneAmt(); 
log.info(a); 
tran.setTransAmt(new BigDecimal(a.replaceAll("[a-zA-Z,]", "").trim())); 
tranRepository.saveAndFlush(trangloTran); 
+0

Still wird nicht funktionieren, da '" 3.000.000.00 "' kein gültiger Wert für ['new BigDecimal (String)'] ist (https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal .html # BigDecimal-java.lang.String-). – Andreas

+0

@Andreas Ja, ich habe den ',' Teil verpasst. Danke, ich habe die Antwort bearbeitet –