来自oracle的数字值在C#数据集上额外获得0.000003
我在从数据库获取数据时遇到了一个奇怪的问题 我对存储过程使用C#和Oracle.DataAccess 在DB中,我有一个名为TotalPayout的数字(10,2)类型字段,当将其转储到DB中时,我会得到这些数据来自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; 如果有人有任何意见或建议,我将不胜感激。确实希望解
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