2017-10-14 18 views
1

当我试图用JPA-Hibernate将对象持久化到Oracle数据库中时,出现此异常。 该对象具有一些双字段,当为这些字段设置零时,它可以工作!java.lang.IllegalArgumentException:Underflow

这些字段Oracle数据类型是FLOAT(我尝试“BINARY_DOUBLE”数据类型太多,但它不工作) 这些字段的Java数据类型是这些领域的双

值:

1.503321981455955E-154

4.450283526817318E-308

4.0474E-320

8.30 9748437E-315

+1

这个异常主要是因为您传递了错误的参数或其他空值而引发的。你能上传你的代码吗? – Lokesh

+0

显然是因为算术下溢。详细信息[这里](https://stackoverflow.com/questions/2154712/common-underflow-and-overflow-exceptions) – pirho

回答

0

在Oracle中,FLOAT是NUMBER的子类型,并且您指定的所有值都超出了NUMBER类型的限制。 NUMBER可以表示从1.0e-130到1.0e126的值;因此,它不能代表4E-308等数字。您给出的大多数值同样超过了BINARY_DOUBLE的限制,即
2.22507485850720E-308至1.79769313486231E + 308。 See this reference

虽然我不确定你是如何从Java中获得这些值的。 Java double的限制为+/- 1.79769313486231570E + 308,至少根据this reference。 Java指定浮动和双打将使用IEEE-754格式和规则。

祝你好运。