在 JAVA 中将字符串转换为 Bigdecimal

ConvertString to Big Decimal in 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)

这里的问题是您的字符串包含字母字符,因此无法将其转换为 BigDecimal,这就是您得到 NumberFormatException.

的原因

您需要在尝试转换之前替换这些字母字符:

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