【发布时间】:2017-07-05 10:17:57
【问题描述】:
我正在尝试将字符串存储到数据类型为 Big Decimal 的列中。
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)
【问题讨论】:
-
约翰,你真的想把 Big Decimal 转换为 String 吗?正如我在您的代码中看到的那样,您正在尝试将 String 转换为 Big Decimal
-
@Andreas: NumberFormatException != NullPointerException.
-
那么您为什么希望
BigDecimal(String)能够解析它?您是否期望它只是删除领先的“IDR”部分?文档是否表明它会这样做? -
@John
BigDecimal用于 数字,例如3000000.00是一个有效数字。3,000,000.00不是BigDecimal的有效数字。 Indonesian RupiahIDR货币前缀也不是 数字 的有效部分。所以不,BigDecimal不能用货币存储 amount 值。 -
@John,您是否尝试过 here 提供的解决方案,但这无助于您存储 IDR
标签: java string bigdecimal numberformatexception