DB2 JDBC failed on sum a DOUBLE TYPE 202601.84 + 249494.82=452096.660000003
Hi there,
My DB2 version is 9.5, and I use db2 JDBC (v9.5fp5 or v9.7fp2) for developing.
Both the two JDBC have a problem while SUM DOUBLE TYPE number.
For example, 202601.84 + 249494.82, in DB2 client or Quest Cental for DB2 I got the right answer 452096.66,
but in JAVA or DbVisualizer 6.5.7(also using JDBC driver) I got 452096.66000000003!
Who can explain why?
My following code is here:
CREATE
TABLE TEST_
(
ID INTEGER NOT NULL,
PRICE DOUBLE,
PRIMARY KEY (ID)
);
insert into TBMDEV.TEST_ (ID, PRICE) values (1, 202601.84);
insert into TBMDEV.TEST_ (ID, PRICE) values (2, 249494.82);
public class DB2JDBCConnection {
static {
try {
Class.forName("com.ibm.db2.jcc.DB2Driver");
} catch (
ClassNotFoundException e) {
System.err.println(e);
System.exit(1);
}
}
public static void main(String args[]) {
String url = "jdbc:db2://192.168.0.1:50000/dev";
String uname = "dev", psswrd = "dev";
String query = " select sum(price) from dev.test_ ";
try {
Connection conn = DriverManager.getConnection(url, uname, psswrd);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
// Loop through the result and print it out
System.out.println(query);
System.out.println("----------------------------");
while (rs.next()) {
System.out.print(rs.getString(1) + " \t");
}
rs.close();
stmt.close();
conn.close();
} catch (
SQLException e) {
System.out.println("SQL Exception: ");
System.err.println(e.getMessage());
}
}// main
} // class
------解决方案--------------------
Java code
rs.getDouble(1)