使用 JDBC 从 Db2 检索 Decimal 字段

Retrieving a Decimal field from Db2 using JDBC

提问人:Jaya sakthivel 提问时间:5/5/2023 最后编辑:Jaya sakthivel 更新时间:5/5/2023 访问量:76

问:

我正在尝试从 Db2 for z/OS 表中检索十进制值的 STDDEV。我使用下面的 SQL。

            // Execute a query and generate a ResultSet instance
            rs = stmt.executeQuery("SELECT STDDEV(SALARY) FROM DSN8910.EMP"
                    + " WHERE WORKDEPT = 'A00' ");  
                        while (rs.next()) {
                hStdDev         = rs.getBigDecimal(1);
                System.out.println("hStdDev " + hStdDev);
            }

我在 SPUFI 和使用 JDBC 时得到了不同的结果。

使用 SPUFI:

+0.9742432961021595E+04

使用 JDBC:

9742.432961021594

我尝试使用 getString、getFloat。但所有这些都产生了相同的结果。

两个问题:

  1. 我怎样才能以指数形式显示它?与SPUFI结果相同。
  2. 最后一位数字没有四舍五入。 我怎样才能四舍五入?
JDBC 浮点 DB2 大十进制

评论

1赞 mao 5/5/2023
不同的默认显示格式。
0赞 andrewJames 5/5/2023
我认为你可以用最少的工作量得到的最接近的是 - 但这给出了 - 所以不完全是你想要的 - 并且有点不灵活(硬编码)。String.format("%1.15E", hStdDev);9.742432961021594E+0315
0赞 andrewJames 5/5/2023
否则,请参阅如何在 java 中用科学记数法表示数字?和类似的问题。我认为在科学记数法中,值以开头,正数有加号,这种情况并不常见。也许其他人可以提供更好的方法。0.
0赞 Jaya sakthivel 5/30/2023
谢谢。我能够使用 String.format 实现它。:)

答: 暂无答案