Java ResultSet getDouble()的值不正确

Java ResultSet getDouble()的值不正确,java,resultset,Java,Resultset,使用结果集getDouble()时,我希望从数据库中获取正确的值。 数据库中存储的值是11.421351。当我执行resultSet.getDouble(“lon”)时,我会得到11.421359999这样的值。 我怎样才能打印出11.421351呢?Java中的double和float类型使用浮点运算,并且不精确。相反,您应该使用精确的类型: 在Java中,使用BigDecimal 在SQL数据库中,使用NUMERIC或DECIMAL 然后,当您从Java访问结果集时,使用ResultSe

使用结果集getDouble()时,我希望从数据库中获取正确的值。 数据库中存储的值是11.421351。当我执行resultSet.getDouble(“lon”)时,我会得到11.421359999这样的值。
我怎样才能打印出11.421351呢?

Java中的
double
float
类型使用浮点运算,并且不精确。相反,您应该使用精确的类型:

  • 在Java中,使用
    BigDecimal
  • 在SQL数据库中,使用
    NUMERIC
    DECIMAL

然后,当您从Java访问结果集时,使用
ResultSet#getBigDecimal
以获得具有完整原始精度的数字。

这可能是因为Double这样存储(在Java中)。您可以尝试
getString()
@dan1st,这不是问题所在。