为什么当我尝试将这个大数字存储在一个double中时,我将这个奇怪的结果导入Java应用程序?

时间:2016-03-10 12:55:06

标签: java numbers double spring-data-jpa

尝试将此SQL查询的正确输出存储到Java applcation中的 double 变量时,我遇到以下问题。

所以我有 SQL 查询:

SELECT sum(anagraficaEdificio.imp_tot_ind - anagraficaEdificio.imp_cof) FROM TID003_ANAGEDIFICIO anagraficaEdificio
INNER JOIN TID002_CANDIDATURA candidatura ON (candidatura.PRG_PAR = anagraficaEdificio.PRG_PAR AND candidatura.PRG_CAN = anagraficaEdificio.PRG_CAN)
INNER JOIN TID001_ANAGPARTECIPA anagPartecipa ON(anagPartecipa.PRG_PAR = candidatura.PRG_PAR)
INNER JOIN anagrafiche.TPG1029_PROVNUOIST provNuovIst ON (provNuovIst.COD_PRV_NIS = anagPartecipa.COD_PRV_NIS)
WHERE FLG_GRA=1

直接在我的数据库上执行此查询(使用其客户端)我获得了正确的数字结果: 36481888,47

好的,所以我已经将它实现到Java应用程序中(使用SpringDataJpa,但我认为这并不重要,因为它是以 SQL本机查询执行的):

@Query(value = "SELECT sum(anagraficaEdificio.imp_tot_ind - anagraficaEdificio.imp_cof) FROM TID003_ANAGEDIFICIO anagraficaEdificio "
         + "INNER JOIN TID002_CANDIDATURA candidatura ON (candidatura.PRG_PAR = anagraficaEdificio.PRG_PAR AND candidatura.PRG_CAN = anagraficaEdificio.PRG_CAN) "
         + "INNER JOIN TID001_ANAGPARTECIPA anagPartecipa ON(anagPartecipa.PRG_PAR = candidatura.PRG_PAR) "
         + "INNER JOIN anagrafiche.TPG1029_PROVNUOIST provNuovIst ON (provNuovIst.COD_PRV_NIS = anagPartecipa.COD_PRV_NIS) "
         + "WHERE FLG_GRA=1", nativeQuery = true)
double getImportoFinanziabileNazionale();

执行原始查询。

问题在于,当我通过以下方式调用此方法时:

double risultato = tid003AnagedificioRepository.getImportoFinanziabileMiurNazionale();

存储在 risultato 变量中的值不是 36481888,47 (正确的值),但我获得此值 3.648188847E7 。< / p>

为什么它里面包含一个E?与exponensial表示法有关的东西或类似的东西?如何获取我的查询返回到我的Java应用程序的oringial 36481888,47 值?是否与使用 double

有关

我错过了什么?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

它有一个E,因为它的格式与您期望的格式不同。它的编号相同。 36481888,47(您的电话号码)与3.648188847E7的号码相同。在这种情况下,E代表&#34;指数&#34;或幂为10。您可以按照自己喜欢的方式打印它。您没有发布Java代码:查找printf或其他格式化功能,以便了解如何根据您的喜好打印它。 http://web.cerritos.edu/jwilson/SitePages/java_language_resources/Java_printf_method_quick_reference.pdf