0
Query qry = session.createSQLQuery(qrystr)
.addScalar("id", Hibernate.INTEGER)
.addScalar("balance",Hibernate.FLOAT);

    Object[] headerDetails=(Object[])qry.uniqueResult();
    session.close();
    System.out.println("balance"+headerDetails[1]);

对于上述代码,当执行查询时,数据库中的值 66996956 返回为 6.6996956E7。

即使对于 DOUBLE,输出也是 6.6996956E7。但是当提供 math.BIG_DECIMAL 时,该值是正确的。为什么 double 和 float 有问题。在代码中,我可以引入 bigdecimal,因为其余数据是浮点数。

4

1 回答 1

0

66996956 和 6.6996956E7 是相同的值,显示不同。请参阅文档以了解为什么以这种方式显示:

如果 m 小于 10^-3 或大于或等于 10^7,则它以所谓的“计算机科学记数法”表示。

如果您不介意浮点数和双精度数必然具有的精度损失(对于大值甚至更多),然后使用它们。如果您想要一个绝对精确的值,请使用 BigDecimal。

于 2012-08-10T10:05:52.347 回答