为什么当我尝试将这个大数字存储在 double 中时,我在 Java 应用程序中得到了这个奇怪的结果?
Why when I try to store this big number inside a double I obtain this strange result into a Java application?
我在尝试将此 SQL 查询的正确输出存储到 double 变量到 Java 应用程序时遇到以下问题。
所以我有这个 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.
为什么里面有一个E?与指数符号或类似的东西有关吗?如何将查询返回的原始 36481888,47 值获取到 Java 应用程序中?和double的使用有关吗?
我错过了什么?我该如何解决这个问题?
它有一个 E,因为它的书写格式与您预期的不同。这是同一个数字。 36481888,47(您的号码)与 3.648188847E7 相同。在这种情况下,E 代表 "Exponent",或 10 的幂。您可以按照 prefer.You 未 post 您的 Java 代码的方式打印它:查找 printf 或其他格式化函数,看看如何根据您的喜好打印它。
http://web.cerritos.edu/jwilson/SitePages/java_language_resources/Java_printf_method_quick_reference.pdf
我在尝试将此 SQL 查询的正确输出存储到 double 变量到 Java 应用程序时遇到以下问题。
所以我有这个 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.
为什么里面有一个E?与指数符号或类似的东西有关吗?如何将查询返回的原始 36481888,47 值获取到 Java 应用程序中?和double的使用有关吗?
我错过了什么?我该如何解决这个问题?
它有一个 E,因为它的书写格式与您预期的不同。这是同一个数字。 36481888,47(您的号码)与 3.648188847E7 相同。在这种情况下,E 代表 "Exponent",或 10 的幂。您可以按照 prefer.You 未 post 您的 Java 代码的方式打印它:查找 printf 或其他格式化函数,看看如何根据您的喜好打印它。 http://web.cerritos.edu/jwilson/SitePages/java_language_resources/Java_printf_method_quick_reference.pdf