I have a strange problem on getting data from DB
I use C# and Oracle.DataAccess with stored procedure.
In the DB I have a NUMBER(10,2) type field named TotalPayout and when dumping it on the DB I get this data
select a.totalpayout, DUMP(a.totalpayout) from tbla a where a.totalpayout > 17 and a.totalpayout < 18;
returns:
TOTALPAYOUT , DUMP(A.TOTALPAYOUT)
17.40 , Typ=2 Len=3: 193,18,41
17.50 , Typ=2 Len=3: 193,18,51
17.60 , Typ=2 Len=3: 193,18,61
17.70 , Typ=2 Len=3: 193,18,71
But when running the progrem on the DataSet into column type Double I get this values
Total Payout
- 17.400000000000002
17.5
17.7
17.6
The first value get extra 00000000000002 Can’t find any clue why this happening.
this is the code i use to get the data
public static DataSet ExecuteDataset(OracleConnection connection, CommandType commandType, string commandText, params OracleParameter[] commandParameters)
{
if (connection == null) throw new ArgumentNullException("connection");
// Create a command and prepare it for execution
OracleCommand cmd = new OracleCommand();
bool mustCloseConnection = false;
PrepareCommand(cmd, connection, (OracleTransaction)null, commandType, commandText, commandParameters, out mustCloseConnection);
// Create the DataAdapter & DataSet
using (OracleDataAdapter da = new OracleDataAdapter(cmd))
{
DataSet ds = new DataSet();
ds.Locale = CultureInfo.InvariantCulture;
// Fill the DataSet using default values for DataTable names, etc
da.Fill(ds);
// Detach the OracleParameters from the command object, so they can be used again
cmd.Parameters.Clear();
if (mustCloseConnection)
connection.Close();
// Return the dataset
return ds;
}
}
If anyone has any advice or suggestion I would appreciate it. Would really like to fix this issue.