如何从C#双变量中的SqlDataReader读取0.000e-6的十进制值

时间:2015-08-24 08:19:07

标签: c# sqldatareader

我正在尝试从我的数据库中读取一些十进制值。这些值是10 -6 的数量级。我试图使用这样的代码将其读入C#中的double变量:数据库中的sqltype是“float”。要读取的样本值是“1.99999999495049E-06” -

Double [] rmseValues = null;

while (dataReader.Read())
{
    // This shows my datatype is float (sql)
    string temp = dataReader.GetDataTypeName(0);

    // This returns a value of "0"
    string temp1 = dataReader.GetOrdinal("RmseAll").ToString();

    // This throws exception of invalid typecast
    rmseValues[0] = dataReader.GetFloat(0);
}

3 个答案:

答案 0 :(得分:1)

尝试使用GetDouble(0)代替GetFloat(0)

我认为您还需要编辑该行:

Double [] rmseValues = null;

实际上,您正在尝试将值放在null对象中作为初始化rmseValues数组的解决方案,或者仅使用List的双重

Double[] rmseValues = new Double[10];

答案 1 :(得分:0)

使用GetInt64(0)代替GetFloat(0)

答案 2 :(得分:0)

为了不依赖于RDBMS实际的背景类型(比如,NUMBER(10, 3)或类似的)并将其表示为.Net Type(例如Single),请执行转换

  // rmseValues[0] should be Double
  rmseValues[0] = Convert.ToDouble(dataReader.GetValue(0));