2017-07-05 71 views
-2

我想將字符串存儲到數據類型爲大十進制的列中。在JAVA中將字符串轉換爲大十進制

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

,但我得到

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

約翰,你真的想**大十進制轉換爲字符串**?正如我能夠在您的代碼中看到您正在嘗試將** String轉換爲大十進制** –

+0

您的日誌條目有多少是「a」的值? (它是否包含IDR?)我不認爲BigDecimal可以處理數千個分隔符。 –

+0

https://stackoverflow.com/questions/13900204/bigdecimal-to-string類似的問題。 –

回答

1

這裏的問題是,你的字符串包含字母,所以它不會有可能將其轉換爲BigDecimal,這就是爲什麼你有NumberFormatException

您需要在嘗試轉換之前更換這些字母字符:

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

Still將不起作用,因爲'「3,000,000.00」'不是['new BigDecimal(String)']的有效值(https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal的.html#BigDecimal的-java.lang.String-)。 – Andreas

+0

@Andreas是的,我錯過了','的一部分。謝謝我編輯了答案 –

相關問題