2017-10-14 19 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格式和規則。

祝你好運。