来自oracle的数字值在C#数据集上额外获得0.000003

来自oracle的数字值在C#数据集上额外获得0.000003,c#,oracle,double,decimal,rounding,C#,Oracle,Double,Decimal,Rounding,我在从数据库获取数据时遇到了一个奇怪的问题 我对存储过程使用C#和Oracle.DataAccess 在DB中,我有一个名为TotalPayout的数字(10,2)类型字段,当将其转储到DB中时,我会得到这些数据 select a.totalpayout, DUMP(a.totalpayout) from tbla a where a.totalpayout > 17 and a.totalpayout < 18; 如果有人有任何意见或建议,我将不胜感激。确实希望解

我在从数据库获取数据时遇到了一个奇怪的问题

我对存储过程使用C#和Oracle.DataAccess

在DB中,我有一个名为TotalPayout的数字(10,2)类型字段,当将其转储到DB中时,我会得到这些数据

select a.totalpayout, DUMP(a.totalpayout)    from   tbla a    where a.totalpayout > 17 and a.totalpayout < 18;

如果有人有任何意见或建议,我将不胜感激。确实希望解决此问题。

使用十进制而不是双精度

小数更精确,并且当用小数位数加上大量值时

双精度对于小数位数的计算是不准确的

使用以下简单代码重新创建它:

double a = 86.24;
double b = 86.25;
double c = b - a;

double d = 86.24;
double e = 86.25;
decimal f = (decimal)e - (decimal)d;

c.ToString();   // Incorrect result is 0.0100000000000051
f.ToString();   // Correct result is 0.01

什么数据类型绑定到数据集中的列?请显示代码。@我添加了代码,列数据类型是双重相关的:@DB列类型是由OracleDataAdapter设置的,我无法更改它
double a = 86.24;
double b = 86.25;
double c = b - a;

double d = 86.24;
double e = 86.25;
decimal f = (decimal)e - (decimal)d;

c.ToString();   // Incorrect result is 0.0100000000000051
f.ToString();   // Correct result is 0.01