|
From: <no...@so...> - 2001-11-13 04:13:17
|
Bugs item #233063, was opened at 2001-02-19 02:19 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=109028&aid=233063&group_id=9028 Category: InterClient >Group: Initial Bug Status: Open Resolution: None Priority: 5 Submitted By: Dmitri Ulitski (vladika) Assigned to: Nobody/Anonymous (nobody) Summary: Scale error in getBigDecimal Initial Comment: 1) In IBConsole create table bug(bug integer) insert into bug values (10) 2) In Java conn = DriverManager.getConnection(......); statement = conn.createStatement(); resultSet = statement.executeQuery("select * from bug"); while (resultSet.next()) { System.out.println(resultSet.getBigDecimal(1, 5)); } Output is 0.00010 ! Explanation: Bug in class ResultSet, method getBigDecimal synchronized public java.math.BigDecimal getBigDecimal (int column, int scale) throws java.sql.SQLException { ................................ case IBTypes.INTEGER__: return java.math.BigDecimal.valueOf ((long) getRowData_int (column-1), scale); // !!! but first parameter is unscaled(!) value !!! ................................ Solution: return java.math.BigDecimal.valueOf ((long) getRowData_int (column-1)).setScale(scale, java.math.BigDecimal.ROUND_HALF_EVEN); Thank you ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=109028&aid=233063&group_id=9028 |